TGViewer
C/C++ | Вопросы собесов C/C++ | Вопросы собесов @easy_c_plus · 4.2K subscribers
Post #2258 569
🤔 Как сделать операцию удаления элемента из начала, если порядок элементов не важен, в vector?

Иногда требуется удалить элемент из начала контейнера 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;
}


Ставь 👍 и забирай 📚 Базу знаний
More from @easy_c_plus
  1. Oct 12, 2026🤔 Какие есть уровни exception гарантий? 1. No-throw Guarantee: метод или операция не выбр…
  2. Oct 12, 2026🤔 Какая сложность поиска в set и unordered_set? Контейнеры set и unordered_set представля…
  3. Oct 11, 2026Post #2563
  4. Oct 11, 2026🤔 Как проверять равенство двух float? Равенство двух float проверяется с учётом допустимо…
  5. Oct 11, 2026🤔 Расскажи о истории умных указателей История умных указателей (smart pointers) в C++ свя…
  6. Oct 10, 2026🤔 Зачем нужен виртуальный деструктор? Виртуальный деструктор необходим, когда класс предп…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →