Я хотел бы реализовать движущееся окно образцов, которые добавляются с нерегулярными интервалами времени, и я хотел бы знать, следует ли использовать std::forward_list
или std::deque
. По прошествии времени в конце контейнера будут добавлены новые элементы, и те, которые уже истекли, будут выгружены с начала контейнера. Теперь проблема заключается в том, что этот контейнер будет разделяться более чем одним объектом, и мне нужно убедиться, что итераторы не становятся недействительными после вставки в конце или стирания в начале.Выполнять ли итераторы std :: deque после ввода или стирания на обоих концах контейнера?
Итак, мой вопрос: делать итераторы в std :: deque, которые указывают на элементы, становятся недействительными после вставки в конце ИЛИ стирать в начале? Обратите внимание, что итераторы, о которых я говорю, указывают на элементы в контейнере, которые не являются началом или концом контейнера.
Чувство моего чувства говорит мне, что мне нужно будет его реализовать с помощью std::forward_list
. Если да, то какой-либо орган знает, может ли связанный список повторно использовать уничтоженные узлы или если он выделяет память каждый раз, когда вставлен новый элемент?
Это задокументировано в cppreference ['deque :: erase'] (http://en.cppreference.com/w/cpp/container/deque/erase), [' deque :: insert'] (http: //en.cppreference.com/w/cpp/container/deque/insert). –
Я бы добавил еще одну ссылку: [deque :: insert] (http://en.cppreference.com/w/cpp/container/deque/insert). И да, итераторы становятся недействительными в любом случае – user3159253
[Имитераторы deque] (http://stackoverflow.com/questions/24210488/storing-iterators-of-stddeque) – Basilevs