C ++ iterate unordered_map - 编译错误

时间:2014-04-02 13:56:20

标签: c++ c++11

我尝试在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;
}

2 个答案:

答案 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

代替?