作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个符号表,其中映射的键是标识符,它返回的向量包含分别表示类型和范围的字符串对。我可以获得一个带有字符串键的映射,返回单个字符串的向量来工作,但是当我尝试配对时,我收到错误。
#include <iostream>
#include <utility>
#include <vector>
#include <map>
#include <string>
using namespace std; //using std namespace for readibility for this question
int main() {
string key = "myKey";
string string1 = "string1";
string string2 = "string2";
pair <string, string> stringPair = make_pair (string1, string2);
map<string, vector<std::pair <string, string>>> myMap;
myMap.insert( make_pair (key, make_pair (string1, string2) )); //insert key into map, create empty vector
//this is where I get th error
myMap[key].push_back(std::make_pair (string1, string2) ); //use key, push strings into vector<string, string>
return 0;
}
error C2664: 'std::pair<_Ty1,_Ty2> std::_Tree<_Traits>::insert(std::pair<const _Kty,_Ty> &&)' : cannot convert parameter 1 from 'std::pair<_Ty1,_Ty2>' to 'std::pair<_Ty1,_Ty2> &&'
我可以得到一个由单个字符串组成的向量来工作,但这似乎更像是一种解决方法,而不是为每个标识符实例提供真正的对。如有任何帮助,我们将不胜感激!
最佳答案
问题是您正在尝试将一对插入到 map 中,而不是插入对的向量。如果您希望向量从空开始,最简单的方法是让它使用默认构造函数(对于向量,它会生成一个空向量),并且根本不显式插入到映射中:
map<string, vector<std::pair <string, string>>> myMap;
myMap[key].push_back(std::make_pair (string1, string2) ); //use key, push strings into vector<string, string>
关于c++11 - 如何在 C++ 中将 insert 插入到 <string, vector<pair::<string, string>>> 的映射中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22901882/
我是一名优秀的程序员,十分优秀!