没有匹配函数来调用Std :: find?

时间:2011-07-13 18:58:46

标签: c++ qt stl

我正在尝试:

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&)

2 个答案:

答案 0 :(得分:9)

原因是因为find期望容器的value_type与传递给find的搜索类型相同。你只传递了密钥,而不是密钥和值。

相反,在容器本身上使用find方法(它也具有对数而不是线性时间复杂度的优势)。

答案 1 :(得分:3)

请改用QMap::find()方法。