我有一个结构;看起来像这样:
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”。有人有解决方案吗?
答案 0 :(得分:2)
*gr.weight
不首先引用iterator
。等效于*(gr.weight)
。
将此更改为(*gr).weight
或gr->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
的迭代器的成员,但该成员失败了。