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()).