在未排序集的向量上迭代 我还在学习C++,不明白我今天遇到的一件事。< /P>
我看到一个邻接列表如果由在未排序集的向量上迭代 我还在学习C++,不明白我今天遇到的一件事。< /P>,c++,vector,C++,Vector,我看到一个邻接列表如果由 std::vector bla::blaa::邻接列表 我相信它是一个无序集的向量 我想知道: 这个数据结构是什么,无序集的向量 如何遍历它以获得邻接列表,请提供一个用于遍历此类数据结构的通用MWE 提前谢谢你教我这个新东西 最低限度(非)工作示例: #include <iostream> #include <vector> #include <unordered_set> using namespace std; int mai
std::vector bla::blaa::邻接列表
我相信它是一个无序集的向量
我想知道:
#include <iostream>
#include <vector>
#include <unordered_set>
using namespace std;
int main()
{
vector<unordered_set<int> > my_sets;
for (int i=0; i<5; i++){
my_sets[i].insert(i*2);
}
for(int i=0;i<my_sets.size();i++)
{
for(unordered_set<int> :: iterator it = my_sets[i].begin(); it != my_sets[i].end();++it)
{
cout << *it;
}
}
return 0;
}
#包括
#包括
#包括
使用名称空间std;
int main()
{
向量my_集;
对于(int i=0;i您的代码中有一个问题,您的向量是空的,但是您试图访问从0到4的索引。在迭代之前,您应该首先设置向量的大小。此外,您还可以使用基于范围的for循环,以避免编写大量索引
此代码是正确的,我认为它符合您的要求:
#include <iostream>
#include <vector>
#include <unordered_set>
using namespace std;
int main()
{
vector<unordered_set<int>> my_sets(5);
// ^^^
// number 5 here initializes the vector with the size of 5
for (int i = 0; i < 5; i++)
my_sets[i].insert(i*2);
for (auto &my_set : my_sets)
for (auto num : my_set)
cout << num;
return 0;
}
一个
是无序列表的集合。每个列表描述一组邻居
翻译成C++:
std::vector<std::unordered_set<int> > adjlist;
或
如果要从一个节点导航到另一个节点,必须查看节点的邻居
std::vector<std::unordered_set<int> > adjlist = {{2, 5}, {2, 3}, {0, 1}, {1, 4}, {3}, {0}};
for (int i = 0; i < adjlist.size(); ++i) {
auto &neighbours = adjlist[i];
for (auto n : neighbours) {
std::cout << i << "->" << n << '\n';
}
}
std::vector adjlist={{2,5},{2,3},{0,1},{1,4},{3},{0};
对于(int i=0;i std::cout-read?这里是另一个@OlafDietsche:tx,但我知道邻接列表是什么。我的问题与迭代这种数据结构有关。
for (int node = 0; node < adjlist.size(); ++node) {
// do something with node
}
for (auto &neighbours : adjlist) {
// do something with each node's neighbours
}
std::vector<std::unordered_set<int> > adjlist = {{2, 5}, {2, 3}, {0, 1}, {1, 4}, {3}, {0}};
for (int i = 0; i < adjlist.size(); ++i) {
auto &neighbours = adjlist[i];
for (auto n : neighbours) {
std::cout << i << "->" << n << '\n';
}
}