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

时间:2018-12-06 04:18:11

标签: c++ list vector struct access

我有一个结构;看起来像这样:

onmouseover

我有这些结构的列表的载体;看起来像这样:

<!DOCTYPE html>
<html>

<head>
    <title>testing</title>
</head>

<body>
    <a>dasdasd</a>
    <p id="k" style="border: 1px solid red">as</p>

    <script type="text/javascript">
    	
     document.getElementById("k").onmouseover = function() {alert('Hello')};
     
    </script>
</body>

</html>

我已经初始化了列表向量,但是我不知道如何打印所有边缘的权重成员。

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
};

这不起作用。 VS告诉我它没有成员“ weight”。有人有解决方案吗?

3 个答案:

答案 0 :(得分:2)

*gr.weight不首先引用iterator。等效于*(gr.weight)

将此更改为(*gr).weightgr->weight;

答案 1 :(得分:1)

gr是一个迭代器,在许多方面其行为都类似于指针,因此应使用gr->weight而不是*gr.weight


考虑基于范围的for循环:

for (const auto &edgeList : adjacent)
{
    for (const auto &edge : edgeList)
    {
        cout << edge.weight << ' ';
    }
    cout << endl;
}

答案 2 :(得分:0)

应该是:

cout << gr->weight;

也等同于:

cout << (*gr).weight;

您之所以没有进行编译,是因为operator precedence

*a(间接)运算符的优先级比.(成员访问)运算符的优先级低。因此,在您的情况下,它试图找到名为weight的迭代器的成员,但该成员失败了。