c++ - 将 3 个变量值插入到多图中
c++ - Inserting 3 variable values into a multimap
我是地图和多重映射的新手,在尝试通过使用一对字符串(充当键)和一个整数值:
这是我的多图声明:
multimap<pair<string, string>, int> wordpairs;
这就是我尝试填充多图的方式:
int toInsert = 0;
for (int i = 0; i < s; i++) {
wordpairs.insert((words[i], words[i+1]), toInsert);
}
其中单词是:
vector<string> words
我收到此错误和一堆警告:
error: no matching function for call to ‘std::multimap<std::pair<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> >, int>::insert(std::__cxx11::basic_string<char>&, int&)’
wordpairs.insert((words[i], words[i+1]), toInsert);
^
不确定如何正确插入我想要的值。 :(
您的密钥是一对 (pair<string, string>
) 而 (words[i], words[i+j])
不是一对。你需要 wordpairs.emplace(std::make_pair(words[i], words[i+j]), toInsert)
编辑:有两种方法可以将某些东西放入地图(或多地图)中。第一个是插入,它需要一个对象复制到您的地图中。您的地图包含一对 < pair< string,string >, int >。所以你可以像... wordpairs.insert(std::make_pair(std::make_pair(words[i], words[i+j]), toInsert))
一样调用插入,或者你可以放置它们。 Emplace 就地构造对象,因此无需使用 make_pair
构造它然后将其复制到地图中,您只需使用给定的调用就地构造它。
你应该使用这个wordpairs.insert( make_pair(make_pair(words[i], words[i+1]), toInsert));
insert member function 只需要一个参数。
wordpairs.insert((words[i], words[i+1]), toInsert);
至少提供两个。它不是有效的语法(我认为,逗号运算符在此上下文中可能有效,也可能无效。)。
插入需要一对 {key, value},您的密钥是一对 {words[i], words[i+1]} 将其与统一初始化的魔力相结合:
wordpairs.insert({{words[i], words[i+1]}, toInsert});
这需要 C++11。
中找到有关此作品为何有效的其他阅读材料
我是地图和多重映射的新手,在尝试通过使用一对字符串(充当键)和一个整数值:
这是我的多图声明:
multimap<pair<string, string>, int> wordpairs;
这就是我尝试填充多图的方式:
int toInsert = 0;
for (int i = 0; i < s; i++) {
wordpairs.insert((words[i], words[i+1]), toInsert);
}
其中单词是:
vector<string> words
我收到此错误和一堆警告:
error: no matching function for call to ‘std::multimap<std::pair<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> >, int>::insert(std::__cxx11::basic_string<char>&, int&)’
wordpairs.insert((words[i], words[i+1]), toInsert);
^
不确定如何正确插入我想要的值。 :(
您的密钥是一对 (pair<string, string>
) 而 (words[i], words[i+j])
不是一对。你需要 wordpairs.emplace(std::make_pair(words[i], words[i+j]), toInsert)
编辑:有两种方法可以将某些东西放入地图(或多地图)中。第一个是插入,它需要一个对象复制到您的地图中。您的地图包含一对 < pair< string,string >, int >。所以你可以像... wordpairs.insert(std::make_pair(std::make_pair(words[i], words[i+j]), toInsert))
一样调用插入,或者你可以放置它们。 Emplace 就地构造对象,因此无需使用 make_pair
构造它然后将其复制到地图中,您只需使用给定的调用就地构造它。
你应该使用这个wordpairs.insert( make_pair(make_pair(words[i], words[i+1]), toInsert));
insert member function 只需要一个参数。
wordpairs.insert((words[i], words[i+1]), toInsert);
至少提供两个。它不是有效的语法(我认为,逗号运算符在此上下文中可能有效,也可能无效。)。
插入需要一对 {key, value},您的密钥是一对 {words[i], words[i+1]} 将其与统一初始化的魔力相结合:
wordpairs.insert({{words[i], words[i+1]}, toInsert});
这需要 C++11。
中找到有关此作品为何有效的其他阅读材料