2013-07-28 180 views
2

我想编译一个C++源文件,但是当我尝试编译它时遇到了下面的错误。编译C++代码时出现编译错误

错误:

error: ‘template class std::map’ used without template parameters

我得到了它具有mp.find(someString)行的错误。

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

执行if语句时出现错误。

我该如何解决这个问题?的map::end

更新

+0

这个参考可能会有帮助:http://en.cppreference.com/w/cpp/container/map/find –

+2

哪一部分的'模板类的std ::地图使用没有模板参数需要澄清? –

回答

4

使用mp.end()代替:

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

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

看到std::map::end参考

+0

此文档http://www.cplusplus.com/reference/map/map/find/ 表示:“如果找到,则在容器中搜索具有等于k的键的元素,并将迭代器返回给它,否则返回迭代器映射::结束。“因此我使用map :: end。这个文档应该改变吗? – Bourne

+0

它应该解释为'如果没有找到这样的元素,则返回过去的最终(见end())迭代器。“ – billz

+0

@bourne这里的文档没有什么错,编写map不是很明智: :结束并删除它以将迭代器返回到最后。什么结束?无论如何,'地图'是什么? –

2

您需要使用mp.end

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

此参考文献为find显示了一个更广泛的示例。