【发布时间】:2018-05-08 06:56:14
【问题描述】:
我是学习 c++ 的新手,我在尝试迭代我的代码时遇到了麻烦。
vector<map<string, char>> skills;
map<string, char> frontFloat;
map<string, char> frontGlide;
skills.push_back(frontFloat);
skills.push_back(frontGlide);
frontFloat["Wetface"]='C';
frontFloat["relaxed"]='C';
frontFloat["comfortable"]='I';
// ...
for (auto x : skills) {
for (auto it=x.begin(); it!=x.end(); ++it){
cout<< it->first << " => " << it->second << '\n';
}
}
我正在尝试遍历 vector 并进一步遍历向量中的每个 map。
我的for 循环似乎没有打印任何内容,我已将值推送到地图中。请指教。
【问题讨论】:
-
你能展示一下你是如何插入这些值的吗?
-
您的示例不会将任何内容推送到地图中。这很可能就是问题所在,这就是您应该展示的内容。顺便说一句,
auto x : skills复制每张地图,当有大量数据要复制时,你不想这样做。 -
由于您使用了
hashmap标签,我想指出std::map不是 哈希图!它是一个自平衡二叉搜索树(即红黑树)。对于哈希图,请使用std::unordered_map。 -
“并且我已将值推送到地图中” - 不是在您发布的代码中您没有。请尽可能将示例代码发布为minimal reproducible example。
-
与您的问题无关,但您很可能想要
auto& x或const auto& x。
标签: c++ vector hashmap iteration