Sobes.tech
Middle

Jak wykonać operację usunięcia elementu z początku wektora, jeśli kolejność elementów nie jest istotna?

sobes.tech AI

Odpowiedź od AI

Efektywny sposób to przesunięcie ostatniego elementu wektora na początek, a następnie usunięcie ostatniego elementu.

#include <vector>
#include <algorithm> // Dla std::swap

int main() {
    std::vector<int> vec = {1, 2, 3, 4, 5};

    if (!vec.empty()) {
        std::swap(vec.front(), vec.back()); // Przesuwa ostatni element na początek
        vec.pop_back();                  // Usuwa ostatni (teraz oryginalny pierwszy)
    }

    // vec jest teraz bez oryginalnego pierwszego elementu, kolejność nie ma znaczenia.

    return 0;
}

Ta metoda ma złożoność O(1), w przeciwieństwie do O(n), które byłoby przy użyciu vec.erase(vec.begin()).