Как работает метод make_heap векторного шаблона? - PullRequest
2 голосов
/ 17 февраля 2011

Когда я использую метод «make_heap» векторного контейнера stl, он изменяет физические адреса элементов или просто логически меняет порядок (через некоторый член класса)

Позвольте мне объяснить больше:

Предположим, я реализую Heap, используя следующую структуру

struct heap
{

    int cost;
    struct heap* leftChild;
    struct heap* rightChild;

};

Я могу убедиться, что меняются только указатели внутри структуры.но не физические адреса.Это так делает вектор make_heap?

Причина, по которой я задаю этот вопрос, заключается в том, что у меня есть еще один объект, который указывает на элементы кучи.Я хочу убедиться, что мне не нужно обновлять этот указатель, даже если изменяется куча.

1 Ответ

0 голосов
/ 17 февраля 2011

Полагаю, вы ссылаетесь на std::make_heap с vector s итераторами в качестве параметров. В этом случае он только переставляет элементы в векторе и не вызывает перераспределений, поэтому вы можете смело предполагать, что указатели (или итераторы) на векторные элементы останутся действительными даже после вызова make_heap.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...