我正在尝试编译C ++源文件,但是当我尝试编译它时,我遇到了以下错误。
错误:
错误:'模板类std :: map'在没有模板参数的情况下使用
我在mp.find(someString)
的行中收到错误。
map<string, int *> mp;
sub = "xyz";
if(mp.find(sub) != map::end) {
doSomething();
}
执行if
语句时出错。
如何解决此问题?
答案 0 :(得分:4)
使用mp.end()
代替map::end
更新:
if(mp.find(sub) != map::end) {
到
if(mp.find(sub) != mp.end()) {
// ^^^^^^^^
参见std::map::end参考
答案 1 :(得分:2)
答案 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}}