Я пытаюсь удалить все пустые векторы внутри другого вектора, ниже мой код:
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector< vector<int> > vector(9);
vector[0].push_back(2);
vector[3].push_back(5);
cout << vector.size() << endl; // print 9
for (int i = 0; i < vector.size(); ++i) {
if (vector[i].size() == 0) {
vector.erase(vector.begin() + i);
}
}
cout << vector.size() << endl; // prints 5?
}
Теперь он печатает 5
во втором операторе печати, потому что после удаления векторасразу обновляет свой размер.Так что теперь размер отличается от предыдущего, и индекс не указывает на правильный элемент.
Есть ли способ исправить эту проблему, чтобы я мог найти правильный размер после удаления всех пустых элементов?В этом случае должно быть напечатано 2
?