gpt4 book ai didi

c++11 - 如何在 C++ 中将 insert 插入到 >> 的映射中?

转载 作者:行者123 更新时间:2023-12-03 06:44:37 24 4
gpt4 key购买 nike

我正在尝试创建一个符号表,其中映射的键是标识符,它返回的向量包含分别表示类型和范围的字符串对。我可以获得一个带有字符串键的映射,返回单个字符串的向量来工作,但是当我尝试配对时,我收到错误。

#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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com