[英]Print a Member of Struct in a Vector of Lists of Structs
我有一个结构; 它看起来像这样:
struct Edge { //Represents an edge
int v1, v2; // From vertex, To vertex
double weight; // Edge weight
Edge(int vertex1, int vertex2, double wt) : // Edge constructor
v1{ vertex1 }, v2{ vertex2 }, weight{ wt } {}; // from, to, weight
};
我有一个包含这些结构列表的向量; 它看起来像这样:
vector<list<Edge>> adjacent;
我已经初始化了我的列表向量,但我不知道如何打印所有边的权重成员。
list<Edge> ::iterator gr; //list iterator
for (int x = 0; x < numVertices; x++) {
for (gr = adjacent[x].begin(); gr != adjacent[x].end(); ++gr) {
cout << *gr.weight;
}
}
这是行不通的。 VS 告诉我它没有成员“重量”。 有人有解决办法吗?
*gr.weight
不会首先引用iterator
。 它等同于*(gr.weight)
。
将其更改为(*gr).weight
或gr->weight;
gr
是一个迭代器,在很多方面表现得像一个指针,因此您应该使用gr->weight
而不是*gr.weight
。
改为考虑基于范围的for
循环:
for (const auto &edgeList : adjacent)
{
for (const auto &edge : edgeList)
{
cout << edge.weight << ' ';
}
cout << endl;
}
应该:
cout << gr->weight;
也相当于做:
cout << (*gr).weight;
你没有编译的原因是因为operator precedence
:
*a
(间接)运算符的优先级低于.
(成员访问)运营商。 因此,在您的情况下,它试图找到名为weight
的迭代器成员,但失败了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.