与map.find()的运算符不匹配

时间:2014-02-05 18:39:42

标签: c++ vector map iterator

我有一张像这样设置的地图。

vector < map <RGB, int> > count;

使用这样的迭代器:

vector < map <RGB, int> >::iterator it;

这有效:

count[min_distance_index].find(img[i]);

这不是(它表示不匹配operator =):

it = count[min_distance_index].find(img[i]);

有什么想法吗? RGB只是一个结构,我已经定义了&lt;操作员自己。

2 个答案:

答案 0 :(得分:2)

此代码: count[min_distance_index].find(img[i]); 你在这里做的是:

vector < map <RGB, int> >[]会给你一个map<RGB, int> 然后你打电话给map<RGB, int>.find()。 根据这个网站:http://www.cplusplus.com/reference/map/map/find/

  

元素的迭代器,如果找到具有指定键的元素,   或者map :: end否则。

     

如果map对象是const限定的,则该函数返回a   常量性。否则,它返回一个迭代器。

     

成员类型iterator和const_iterator是双向迭代器   指向元素的类型(类型为value_type)。请注意   map容器中的value_type是pair的别名。

map<RGB, int>.find()会返回map<RGB, int>::iterator 而不是vector<map<RGB,int> >::iterator

答案 1 :(得分:1)

尝试

map<R G B, int> ::const_iterator it;

vector []将返回对map

的引用