对向量对中的向量进行排序
Sorting a vector within a vector pair
在 C++ 中考虑这个片段
vector<pair<int, vector<long long int>>> strengthVector;
// sorting
for (auto x : strengthVector) {
sort(x.second.begin() + 1, x.second.end(), greater<long long int>());
}
// calculate prefix sum
for (auto x : strengthVector) {
for (j = 1; j < x.second.size(); j++) {
x.second[j] += x.second[j - 1];
}
}
我想用每一对对向量进行排序。我试过按照以下方式进行。但是当我出于调试目的打印值时,它告诉我上述两个操作中的 none 发生了。
调试 vscode 中的代码时,出现以下错误 __for_begin: <error reading variable: Cannot access memory at address 0x0>{_M_current = 0x7fffffffda90}
。
不知道什么意思。请指教
这个循环
for (auto x : strengthVector)
对 strengthVector
中的每个元素进行 复制,因此您实际上并没有修改它。
你需要通过引用迭代
for (auto &x : strengthVector)
在 C++ 中考虑这个片段
vector<pair<int, vector<long long int>>> strengthVector;
// sorting
for (auto x : strengthVector) {
sort(x.second.begin() + 1, x.second.end(), greater<long long int>());
}
// calculate prefix sum
for (auto x : strengthVector) {
for (j = 1; j < x.second.size(); j++) {
x.second[j] += x.second[j - 1];
}
}
我想用每一对对向量进行排序。我试过按照以下方式进行。但是当我出于调试目的打印值时,它告诉我上述两个操作中的 none 发生了。
调试 vscode 中的代码时,出现以下错误 __for_begin: <error reading variable: Cannot access memory at address 0x0>{_M_current = 0x7fffffffda90}
。
不知道什么意思。请指教
这个循环
for (auto x : strengthVector)
对 strengthVector
中的每个元素进行 复制,因此您实际上并没有修改它。
你需要通过引用迭代
for (auto &x : strengthVector)