Как используется память в очереди? - PullRequest
0 голосов
/ 20 июля 2010

В моем проекте я использую класс std :: queue. Я хотел бы знать, что произойдет, если я сделаю следующее.

  • Получить указатель на элемент внутри очереди (примечание: указатель, а не итератор).
  • Я делаю изменения в очереди, такие как push и pop в очереди (элемент pop, который не указан предыдущим указателем)

Указатель все еще указывает на тот же элемент, который я указал в начале? Это определяется спецификацией очереди?

Ответы [ 2 ]

1 голос
/ 20 июля 2010

std::queue использует контейнер последовательности для своей реализации.По умолчанию используется std::dequestd::deque, пока все вставки и стирания находятся в начале или конце контейнера, ссылки и указатели на элементы в контейнере не становятся недействительными.

Однако я не знаюкак вы собираетесь получить указатель на элемент в очереди;для этого он не предоставляет функциональности (вы можете получить ссылку только на первый и последний элементы в очереди).

1 голос
/ 20 июля 2010

Просто используйте вместо него std :: deque. std :: queue предназначен для того, чтобы пользователь не мог делать что-либо, кроме очереди.

...