1
假設我在這樣的方式限定的曲線圖,循環通過經由迭代器C中的陣列++
unordered_map<int, unordered_set<int>> graph = {
{ 0, { 1, 2, 3 } },
{ 1, { 3, 4, 5 } },
{ 2, { 6, 5, 4 } }
};
我要清空散列集圖表中的每個條目的。我在這裏做兩個選項,
A. for(auto v = graph.begin(); v != graph.end(); ++v) v->second.clear();
B. for(auto v : graph) v.second.clear();
我看到一個作品,但B沒有。我不太明白。我的理論是,B在做的方式,v是實際元素的副本。所以它不能清除實際的散列集合。
需要幫助。謝謝!
謝謝,它的工作原理!我還有一個問題。根據我的測試,for(auto&v:graph)的運行時間比(auto v:graph)長。我很困惑。第一種方法不需要複製圖形,v只是一個參考。對我來說更有意義的是第二個跑得更長。 – CodingFanSteve
我可能看到更長的時間是由於目前服務器更忙。 – CodingFanSteve
@ CodingForFun15也許編譯器可以推斷清除臨時副本對程序沒有影響,所以它決定完全刪除循環。 – user2079303