c++ - 如何添加到 map <int, list <int>>

标签 c++ list dictionary

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

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/

相关文章:

android - 从 Android 中的 C 文件调用 C++ 函数

c++ - 使用模板和基类实现灵活的数组成员

python - 从排列中清理元组列表

python - 将一对列表对象转换为包含重复项的字典

javascript - 如何在javascript中创建列表字典

c++ - 无法从数组 quadraticExpression 中检索数据值

c++ - 用于检查值是否是其参数的辅助函数

python - 如何在 Django 中检查匹配列表?

javascript - 更改 div 的每个第二个实例的类?

r - 在 R 中的嵌套列表内计算