如何在 C++ 中使用向量对的向量制作邻接表?

Posted

技术标签:

【中文标题】如何在 C++ 中使用向量对的向量制作邻接表?【英文标题】:How to make an Adjacency List using a vector of vector pair in C++? 【发布时间】:2013-05-17 18:42:51 【问题描述】:

我正在尝试使用向量对的向量创建邻接列表,并且每当我运行代码时它都会停止工作。现在,我只尝试在邻接列表“AdjList”中添加第一对。有没有更好的方法或任何修改来做到这一点?

#include <iostream>
#include <vector>
using namespace std;
typedef pair<int, int> ii;
typedef vector<ii> vii;
vector <vii> AdjList;

int main()

    ii v= make_pair(5,4);
    AdjList[0][0]=v;
    cout << v.first<< endl;

【问题讨论】:

你应该拥有的可能是这个,typedef std::vector&lt;std::vector&lt;int&gt; &gt; adjList; 【参考方案1】:

您正在为一个空向量赋值:

AdjList[0][0] = v; // Problematic

尝试使用std::vector::push_back 或调整两个嵌套向量的大小。

如果您知道图形的大小,另一种方法是使用std::array

const int N = 10;

std::array<std::array<int, N>, N>  AdjList;

...

AdjList[0][0] = 1;

【讨论】:

【参考方案2】:

你最好使用std::setstd::unordered_set

std::set<std::pair<int,int>> adj_list;
adj_list.emplace(0,0);
adj_list.emplace(0,1);
for(auto& p:adj_list)
    std::cout<<p.first<<"-"<<p.second<<std::endl;

【讨论】:

以上是关于如何在 C++ 中使用向量对的向量制作邻接表?的主要内容,如果未能解决你的问题,请参考以下文章

C++ 如何制作二维向量函数?

如何在 C++ 中对向量组元素进行排序?

如何在 C++ 中创建向量的向量图?

如何初始化 2D 向量 C++ [重复]

是否有一个函数从matlab中的索引向量制作邻接矩阵?

如何仅通过向量对的第一个元素或自定义向量三元组使用 std::find?