Я прошу прощения, если это дубликат.Я обещаю, что сначала попытался найти ответ.
Я хочу создать двоичную кучу, используя вектор.Для этого мне нужно реализовать функцию pop, которая удаляет «top».В этом случае он просто удалил первый элемент.
Я попытался использовать функцию перемещения, как таковую:
items[Root()] = std::move(items[cur_size--]);
Это должно заменить корень другим элементом, который затем будет переупорядочен(что также не работает).
Вместо этого я попробовал что-то такое:
std::vector<int> items;
int root = 0;
size_t Root() {
return root;
}
void Pop() {
items.erase(items.begin()+root);
root++;
// here I would call the reorder function
}
Таким образом, я бы эффективно изменил корень и работал бы так, как будто вектор начинался наn-я позиция, а не в 0.
Мой вопрос: имеет ли это смысл или есть лучший способ, которым я мог бы это реализовать?
edit: добавленный вектор