Иногда требуется удалить элемент из начала контейнера std::vector, когда порядок элементов не важен. Операция удаления первого элемента может быть затратной по времени, поскольку требует сдвига всех последующих элементов. Чтобы минимизировать эти затраты, можно заменить первый элемент последним и затем удалить последний элемент.
🚩Как это используется?
Этот подход позволяет выполнить операцию удаления за постоянное время O(1) вместо линейного O(n).
🚩Пример
void removeFirstElement(std::vector<int>& vec) {
if (!vec.empty()) {
std::swap(vec.front(), vec.back()); // Обмен первого и последнего элементов
vec.pop_back(); // Удаление последнего элемента
}
}
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
std::cout << "Before removal: ";
for (int i : vec) {
std::cout << i << " ";
}
std::cout << std::endl;
removeFirstElement(vec);
std::cout << "After removal: ";
for (int i : vec) {
std::cout << i << " ";
}
std::cout << std::endl;
return 0;
}Ставь 👍 и забирай 📚 Базу знаний