2014-02-05 105 views
-2

我有一個這樣設置的地圖。與map.find()運算符不匹配()

vector < map <RGB, int> > count; 

有了這樣一個迭代器:

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

這工作:

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

這並不(它說沒有匹配運算符=):

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

任何想法? RGB只是一個結構,我自己定義了<運算符。

+6

'的std ::地圖:: find'不返回'的std ::矢量::迭代:根據本網站 '。事實上,我從Clang得到這個:*錯誤:沒有從'iterator'(又名'__map_iterator ')到'std :: vector > :: iterator'( aka'__wrap_iter ')*使用「std :: map 」而不是「」進行測試時。 – chris

+1

它返回一個'std :: map :: iterator' – Snps

+0

好的。那麼我會如何從這個意義上找到一些東西? – mshindal

回答

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/

An iterator to the element, if an element with specified key is found, or map::end otherwise.

If the map object is const-qualified, the function returns a const_iterator. Otherwise, it returns an iterator.

Member types iterator and const_iterator are bidirectional iterator types pointing to elements (of type value_type). Notice that value_type in map containers is an alias of pair.

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

1

嘗試

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

向量[]會返回一個參考映射

+0

看看他在應用'.find'。 –

+0

count是一個向量,但count [min_distance_index]是對map的引用。這樣對嗎? –

+0

這是正確的。 –