簡體   English   中英

為什么 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM