2011-07-13 40 views
3

我試圖做的事:沒有匹配的函數調用Std :: find?

std::find(images_map.begin(), images_map.end(), current_rgb)); 

其中:

QRgb current_rgb; 
QMap<QRgb, MI*> images_map; 

,但我得到:

error: no matching function for call to 'find(QMap<unsigned int, MI*>::iterator, QMap<unsigned int, MI*>::iterator, QRgb&) 
+0

那些來自Qt的'QMap'和'QRbg'類嗎? – Mat

+2

嗯......混合Q. T.和S. T. L.似乎是要求P. A. I. N. –

回答

3

使用QMap::find()方法來代替。

+1

投了+1,但告訴他原因:內置的發現要快得多。建立在find價格是abiut _log(n)_對標準查找的_n_。 – Naszta

+0

它是錯誤的接口,因此編譯器錯誤。 –

9

原因是因爲find預計容器的value_type與傳遞到find的搜索類型相同。你只是通過了鑰匙,而不是鑰匙和價值。

取而代之的是,在容器本身上使用find方法(它也有利於對數而不是線性時間複雜度)。