Вместо этого вы можете использовать std::list
, у которого есть иногда полезное свойство, заключающееся в том, что итераторы и указатели на значения, содержащиеся в них, не становятся недействительными при вставке или удалении других элементов.
Если вы хотите целочисленную индексацию, используйте std::map<int, int>
вместо. Как и std::list
, это контейнер на основе узлов, который не делает недействительными итераторы или указатели при вставке или удалении других элементов. Вы можете подражать vector::push_back()
так:
void push_back(std::map<int, int>& to, int value) {
int index = to.empty() ? 0 : ((--to.end())->first + 1);
to.emplace(index, value);
}