所以這是我的代碼;我發現排序不適用于此地圖中的向量。有誰知道為什么?
這段代碼的輸出仍然是“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]<<" ";
}
uj5u.com熱心網友回復:
您需要在基于范圍的 for 回圈中使用參考型別
for(auto &g: values) {
sort(g.second.begin(), g.second.end());
}
否則,基于范圍的 for 回圈處理存盤在地圖中的元素的副本。
如果您的編譯器支持 C 17,您還可以撰寫
#include <vector>
#include <map>
#include <iterator>
#include <algorithm>
//...
for (auto &[key, v] : values)
{
std::sort( std::begin( v ), std::end( v ) );
}
uj5u.com熱心網友回復:
auto g: values獲取的元素的值,values但不允許您更改 中的內容values。
auto &g: values采用與參考的元件values,其允許你改變的內容values
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/362049.html
上一篇:給定n個數字的排列陣列,計算編號。元組(i,j,k,l,m)使得i<j<k<l<m和a[i]<a[k]<a[j]<a[m]<a[l]
