加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c 11 – 如何在C中的>>地图中插入插入?

发布时间:2020-12-16 09:51:32 所属栏目:百科 来源:网络整理
导读:我正在尝试创建一个符号表,其中映射的键是一个标识符,它返回的向量包含分别代表类型和范围的字符串对.我能够得到一个带有字符串键的映射返回单个字符串的向量,但是当我尝试对时,我得到一个错误. #include iostream#include utility#include vector#include m
我正在尝试创建一个符号表,其中映射的键是一个标识符,它返回的向量包含分别代表类型和范围的字符串对.我能够得到一个带有字符串键的映射返回单个字符串的向量,但是当我尝试对时,我得到一个错误.

#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;
}

错误C2664:’std :: pair< _Ty1,_Ty2> std :: _ Tree< _Traits> :: insert(std :: pair< const _Kty,_Ty>&&)’:无法从’std :: pair< _Ty1,_Ty2>‘转换参数1到’std :: pair< _Ty1,_Ty2> &安培;&安培;”

我可以得到一个单个字符串的向量,但这似乎更像是一个解决方法而不是为每个标识符实例配置真正的对.任何帮助表示赞赏!

解决方法

问题是你试图在地图中插入一对,而不是成对的矢量.如果你想让向量开始为空,最简单的方法是让它使用默认的构造函数(对于向量,创建一个空向量),而不是显式地插入到地图中:

map<string,string>>> myMap;
myMap[key].push_back(std::make_pair (string1,string>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读