关于map和iterator的C ++错误

时间:2018-03-16 09:16:35

标签: c++ iterator

使用代码:

#include <iostream>
#include <map>
#include <string>

int main()
{
    std::map<int, std::map<std::string, int>> mm;

    std::map<std::string, int>::iterator iter = mm.find(1);
}

我收到以下错误:

Class 'std::_Rb_tree_iterator<std::pair<const int,
std::map<std::string, int>>>' is not compatible with class
'std::map<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char>>, int>::iterator'

我还没有编译代码。 Clion提醒我,上面有一个错误。

1 个答案:

答案 0 :(得分:9)

你只是使用了错误的iter类型,它应该是:

std::map<int, std::map<std::string, int>>::iterator

但是,我建议使用auto来避免此类错误:

auto iter = mm.find(1);