我正在尝试熟悉STL库,但是我无法理解编译错误。我使用编译器错误字符串“无法推断出......的模板参数”搜索了其他问题,但没有一个答案显示适用或相关。
错误4错误C2784:'bool std :: operator<(const std :: unique_ptr< _Ty,_Dx>&,const std :: unique_ptr< _Ty2,_Dx2>&)':无法推断出模板参数对于'const std :: unique_ptr< _Ty,_Dx> &安培;”来自'const std :: string'c:\ program files(x86)\ microsoft visual studio 10.0 \ vc \ include \ xfunctional 125
我正在编写一个简单的解释器来计算一个变量中的导数/积分。我想要一个地图,用于将用户的输入与内部控制代码相匹配。键是trig(或其他)函数,int是控制代码。我正在使用单独的头文件来#define函数,但是对于这个例子,我只是使用整数文字。我正在使用Visual Studio:
#include <cstdio>
#include <map>
using namespace std;
int main(int argc, char** argv) {
map< string, int > functions;
functions.insert( pair<string, int>("sin", 1) );
return 0;
}
编辑:
在尝试了Serge(有效)后回答:functions.insert(std::make_pair(std::string("sin"), 1));
我意识到了这个错误并尝试了这个:
pair<string, int> temp = pair<string,int>("cos",2);
functions.insert(temp);
虽然这可能不是最理想的,但它说明了在插入地图之前没有构造配对对象的问题。
答案 0 :(得分:8)
确保包含字符串标题。
#include <map>
#include <utility>
#include <string>
...
std::map<std::string, int> functions;
functions.insert(std::make_pair(std::string("sin"), 1));
答案 1 :(得分:3)
<string>
char** argv[]
必须为const char* argv[]