对向量对中的向量进行排序

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)