C++ 如何从文本文件读取内容并创建存储float类型vector的map
解决方法
你直接使用C++标准库的std::map<std::string, std::vector<float>>即可实现需求,不需要额外做复杂的实例化操作:
std::map的operator[]在访问不存在的键时,会自动默认构造一个对应类型的空值插入到map中,刚好匹配你需要的「按读取到的名称创建空float vector」的需求- 遍历map即可批量对所有vector执行操作
代码示例
假设你已经把所有读取到的名称存入了名为name_list的std::vector<std::string>中:
#include <string> #include <vector> #include <map> int main() { // 你已经实现的读取名称到vector的逻辑,这里仅作示意 std::vector<std::string> name_list = {"name1", "name2", "name3"}; // 声明目标map std::map<std::string, std::vector<float>> name_vec_map; // 基于名称列表创建对应vector for (const auto& name : name_list) { // 访问不存在的键时自动创建空的float vector name_vec_map[name]; // 若需要初始化vector可以直接操作,比如插入初始值: // name_vec_map[name].push_back(1.5f); } // 批量操作示例:清空所有vector for (auto& entry : name_vec_map) { // entry.first为名称字符串,entry.second为对应的float vector entry.second.clear(); } // 单个数组访问示例 name_vec_map["name1"].push_back(3.14f); return 0; }
补充说明
- 如果你担心误操作触发自动创建不存在的键,可以用
find()方法查询键是否存在,该方法不会自动插入新键值对 - 若使用C++17及以上版本,可以用结构化绑定简化遍历写法:
// C++17及以上支持 for (auto& [name, vec] : name_vec_map) { vec.clear(); }
内容的提问来源于stack exchange,提问作者Alecman
相关产品推荐
相关产品推荐

