[英]Why does std::distance doesn't work on iterator of unordered_map?
[英]Why doesn't sorting work for an iterator in Map
所以這是我的代碼,我發現排序不適用於這個 map 中的向量。 有沒有人有這個想法? 此代碼的 output 仍然是“3 1 2 4 5”
map<int, vector<int> > values;
values[1] = {3,1,2,4,5};
for(auto g: values) {
sort(g.second.begin(), g.second.end());
}
for(int i=0;i<values[1].size();i++) {
cout<<values[1][i]<<" ";
}
您需要在基於范圍的 for 循環中使用引用類型
for(auto &g: values) {
sort(g.second.begin(), g.second.end());
}
否則,基於范圍的 for 循環處理存儲在 map 中的元素的副本。
如果你的編譯器支持 C++ 17 你也可以寫
#include <vector>
#include <map>
#include <iterator>
#include <algorithm>
//...
for (auto &[key, v] : values)
{
std::sort( std::begin( v ), std::end( v ) );
}
auto g: values
獲取values
,但不允許您更改values
中的內容。
auto &g: values
引用values
的元素,它允許您更改values
的內容
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.