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

compilation error while compiling C++ code

本文关键字:编译 错误 C++ 代码      更新时间:2023-10-16

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

错误:

错误:在没有模板参数的情况下使用了"template class std::map"

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

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

当执行if语句时,我得到了错误。

如何解决此问题?

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

更新:

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

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

请参阅std::map::end reference

您需要使用mp.end:

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

这个对CCD_ 6的引用显示了一个更广泛的例子。

您应该将代码更新为:

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

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()完全相同的行为。

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