我尝试在C ++中迭代一个unordered_map,但它不起作用。
map.end()似乎不存在。我不明白我做错了什么。根据各种例子和我之前使用迭代器的工作 - 应该存在end()。
我尝试使用-std = c ++ 11编译以下示例,而不使用:/
#include <unordered_map>
#include <iostream>
#include <vector>
int main(int argc, char** argv){
std::unordered_map<std::string, unsigned long> map;
std::vector<std::string> keys;
std::unordered_map<std::string, unsigned long>::iterator it;
for (it=map.begin(); it != it.end(); ++it){
keys.push_back(it->first);
}
for (unsigned long i=0; i < keys.size();i++){
std::cout<<keys[i];
}
return 0;
}
答案 0 :(得分:3)
您正在使用错误的对象前往end()
。
将it.end()
替换为map.end()
。
答案 1 :(得分:1)
for (it=map.begin(); it != it.end(); ++it){
// ^^^^ the error is here
你的意思是:
for (it=map.begin(); it != map.end(); ++it){ // correct
代替?