繁体   English   中英

在结构列表的向量中打印结构成员

[英]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).weightgr->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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM