C++ C++;此函数调用之前的(void)是做什么的?
我在写这个问题的时候设法找到了答案。及时发布,希望能帮助未来遇到类似问题的开发人员。 下面是一个简短的概述: 我有一个定向的加权映射类。 我在:C++ C++;此函数调用之前的(void)是做什么的?,c++,C++,我在写这个问题的时候设法找到了答案。及时发布,希望能帮助未来遇到类似问题的开发人员。 下面是一个简短的概述: 我有一个定向的加权映射类。 我在:vector节点中跟踪所有节点 我在map中跟踪所有节点的相邻节点,当我写问题时,我能够回答我自己的问题。爱一个美好的时刻。希望这个问题能帮助未来的开发人员,他们也会错过这个问题最基本的答案 In将获取对[]内键值的引用(如果存在),如果不存在则创建一个。 因此在add(Node Node)函数中,(void)connections[Node]实际上是在
vector节点中跟踪所有节点代码>
我在map中跟踪所有节点的相邻节点,当我写问题时,我能够回答我自己的问题。爱一个美好的时刻。希望这个问题能帮助未来的开发人员,他们也会错过这个问题最基本的答案
In将获取对[]内键值的引用(如果存在),如果不存在则创建一个。
因此在add(Node Node)
函数中,(void)connections[Node]
实际上是在邻接映射中创建节点
行之前的(void)
命令编译器忽略任何有关此的警告,因为它在技术上是一行不完整的代码(根据编译器)。阅读更多关于(void)
的含义,这个问题确切地说明了这种代码为什么不好:它使用了一种副作用来隐式地完成它应该做的事情,而不会让读者感到困惑,也不会试图让编译器沉默。
set<Node> nodes; // {n1, n2...nn}
map<Node, map<Node, int>> connections; //Connections between the nodes and their weights
//Add node to graph
void add(Node node) {
nodes.insert(node); //add to node list
(void) connections[node]; //This is the magic line!!
}
bool DFS(N start, N target) {
for (Node node : nodes) {
//This for-each loop crashes when the node in the .at() doesn't exist in the connections map
for (pair<N, int> connectedNode : connections.at(node)) {
if (target == connectedNode.first) {
return true;
}
}
}
return false;
}