我有一张像这样设置的地图。
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;操作员自己。
答案 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
的引用