我最近发现修改自动迭代向量中的数据不会为我带来正确的结果。例如,当我尝试对vector的vector元素进行排序时,某些元素未排序,但是代码成功运行

vector<vector<int> > arr;
arr.push_back({38, 27});
for(auto v : arr)
{
    sort(v.begin(), v.end());
}


上面的代码在排序后的输出仍然是38、27。而当我以sort(arr [0] .begin(),arr [0] .end())进行排序时,结果是正确的。我用gcc编译。

最佳答案

您的for循环复制v,然后对其进行排序。原稿未触碰。您想要的是for (auto &v : arr)

关于c++ - 为什么基于范围的for循环不修改容器元素?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56872548/

10-11 22:42
查看更多