【发布时间】:2020-05-10 08:37:38
【问题描述】:
假设我有 vector 对,其中每个 pair 对应于我正在处理的某个矩阵的索引(行和列)
using namespace std;
vector<pair<int, int>> vec;
我想使用auto,遍历整个向量并立即删除所有满足特定条件的对,例如
for (auto& x : vec) {
if (x.first == x.second) {
vec.erase(x);
}
}
但这不起作用,因为我认为vec.erase() 应该有一个迭代器作为参数,而x 实际上是一个pair,它是向量vec 的一个元素,而不是迭代器。我尝试以几种方式对其进行修改,但我不确定使用 auto 遍历容器元素的确切工作原理以及如何解决此问题。
我可以轻松地修改上面的代码以使其工作并删除向量的多个元素,同时使用auto 进行处理吗?或者我应该修改我的方法?
现在它只是一个对的向量,但以后会更糟,所以为了简单起见,我想使用auto。
【问题讨论】: