2

我正在尝试编译 C++ 源文件,但是在尝试编译时遇到了以下错误。

错误 :

错误:“模板类 std::map”未使用模板参数

我在具有mp.find(someString).

map<string, int *> mp;
sub = "xyz";
if(mp.find(sub) != map::end) {  
   doSomething();
}

if执行语句时出现错误。

我该如何解决这个问题?

4

3 回答 3

4

使用mp.end()而不是map::end

更新 :

if(mp.find(sub) != map::end) { 

if(mp.find(sub) != mp.end()) {
//                 ^^^^^^^^

std::map::end参考

于 2013-07-28T11:42:37.817 回答
2

您需要使用mp.end

 if(mp.find(sub) != mp.end() ) {

这个参考find展示了一个更广泛的例子。

于 2013-07-28T11:43:32.853 回答
1

您应该将代码更新为:

if(mp.find(sub) != mp.end())
//                 ^^^^^^^^

end()方法返回一个迭代器,该迭代器引用地图容器中的最后一个元素。

http://www.cplusplus.com/reference/map/map/end/

也许您试图使用std::endwho is a C++11feature :

if(mp.find(sub) != std::end(mp))
//                 ^^^^^^^^^^^^

在这种情况下,std::end(mp)具有与 完全相同的行为mp.end()

看看文档:http ://www.cplusplus.com/reference/iterator/end/

于 2013-07-28T11:44:04.087 回答