Я пытаюсь ознакомиться с библиотекой STL, но у меня возникают проблемы с пониманием моей ошибки компиляции. Я искал другие вопросы, используя строку ошибки компилятора "не удалось вывести аргумент шаблона для ...", но ни один из ответов не представляется применимым или уместным.
Ошибка 4 ошибка C2784: 'bool std :: operator <(const std :: unique_ptr <_Ty, _Dx> &, const std :: unique_ptr <_Ty2, _Dx2> &)': не удалось вывести аргумент шаблона для 'const std :: unique_ptr <_Ty, _Dx> & 'from' const std :: string 'c: \ программные файлы (x86) \ microsoft visual studio 10.0 \ vc \ include \ xfunctional 125
Я пишу простой интерпретатор для вычисления производных / интегралов по одной переменной. Я хочу карту для сопоставления ввода пользователя с кодом внутреннего контроля. Ключ является триггерной (или другой) функцией, а int является управляющим кодом. Я использую отдельный файл заголовка для определения функций, но для этого примера я просто использую целочисленные литералы. Я использую 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;
}
EDIT:
после попытки ответа Сержа (который работал):
functions.insert(std::make_pair(std::string("sin"), 1));
Я понял ошибку и попробовал это:
pair<string, int> temp = pair<string,int>("cos",2);
functions.insert(temp);
хотя это, вероятно, неоптимально, это иллюстрирует проблему не построения парного объекта перед вставкой в карту.