编译C ++代码时编译错误

时间:2013-07-28 11:40:16

标签: c++ c++11 visual-c++ dictionary find

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

错误:

  

错误:'模板类std :: map'在没有模板参数的情况下使用

我在mp.find(someString)的行中收到错误。

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

执行if语句时出错。

如何解决此问题?

3 个答案:

答案 0 :(得分:4)

使用mp.end()代替map::end

更新:

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

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

参见std::map::end参考

答案 1 :(得分:2)

您需要使用mp.end

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

find的参考显示了更广泛的示例。

答案 2 :(得分:1)

您应该将代码更新为:

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

end()方法返回一个迭代器,引用地图容器中的past-the-end元素。

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

也许您尝试使用std::end C++11功能的if(mp.find(sub) != std::end(mp)) // ^^^^^^^^^^^^

std::end(mp)

在这种情况下,mp.end()与{{1}}的行为完全相同。

查看文档:{​​{3}}