gpt4 book ai didi

c++ - 如何添加到 map >

转载 作者:行者123 更新时间:2023-11-30 02:35:25 25 4
gpt4 key购买 nike

假设我有一个这样的文本文件:

1 2
1 3
2 7
2 8

我想做的是将它们放在链表的映射中。所以我已经像这样初始化了一个 map ,map <int, list<int> > myMap;

我的问题是我不知道如何将它添加到列表中。通常,我们可以通过 myMap[someKey] = someValue; 添加到 map 中。我在向列表中添加值时遇到问题。

我想要的是检查读取的第一个 int 是否在映射中,如果不在,则创建该条目,并将第二个 int 添加到与该键对应的列表中。例如,如果正确完成,第 1 行应该插入一个键 1 和一个包含元素 2 的链表。如果 map 已经有那个键,那么该行的第二个 int 应该只添加到它的链表中。例如,第 2 行应该只将元素 3 添加到 1 的链表中。

我希望的是:

key : value 
1 : 2 -> 3
2 : 7 -> 8

这是我的代码:

ifstream infile;
infile.open(fname.c_str());
string line = "";
if (infile){
while (getline(infile, line)){
istringstream iss(line);
int tail;
iss >> tail;
int edges;
if (vertices.find(tail) == vertices.end()){
iss >> edges;
vertices[tail] = vertices[tail].push_back(edges);
//I'm getting this error: no viable overloaded '='
}
else{
iss >> edges;
vertices[tail].push_back(edges);
}
}
}

最佳答案

一旦您从文件中读取了两个值,这就是您所需要的:

vertices[tail].push_back(edges);

这将完全按照您的意愿进行。 vertices[tail] 将返回对该 map 位置列表的引用。如果该列表尚不存在,将默认在那里构建一个。无需检查它是否已经存在,因为 operator[] 无论如何都会这样做。

关于c++ - 如何添加到 map <int, list <int>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33619589/

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