Junior
259
C++-та қай контейнерлер элементтерді басына қосуға мүмкіндік береді?
AI-дан жауап
sobes.tech AI
std::list және std::deque.
std::list:
- Екіжақты байланысты тізім.
- Бастауына (
push_front) және соңына (push_back) қосу тұрақты уақытта O(1). - Элементтерді кез келген жерде қосу және жою да тұрақты уақытта (қажетті элементке итератор болған жағдайда).
- Индекс бойынша кездейсоқ қол жеткізу O(1) қамтамасыз етпейді.
std::vector-ге қарағанда сақтау үшін қосымша шығындар көп.
std::deque:
- Екі жақты кезек.
- Элементтерді тез (тұрақты уақытта O(1)) қосу және жоюға мүмкіндік береді, соның ішінде басында (
push_front,pop_front) және соңында (push_back,pop_back). - Индекс бойынша кездейсоқ қол жеткізу тұрақты уақытта O(1) қамтамасыз етеді.
- Ішкі түрде блоктар жиынтығы ретінде жүзеге асырылады, бұл жады фрагментациясына және
std::vector-ке қарағанда индекс бойынша баяу қол жеткізуге әкелуі мүмкін (бірақ асимптотикасы бірдей).
push_front қолдану мысалы:
#include <list>
#include <deque>
#include <iostream>
int main() {
// `std::list` қолдану
std::list<int> my_list;
my_list.push_front(20);
my_list.push_front(10);
// тізім: 10, 20
// `std::deque` қолдану
std::deque<int> my_deque;
my_deque.push_front(20);
my_deque.push_front(10);
// deque: 10, 20
std::cout << "Тізім элементтері: ";
for (int val : my_list) {
std::cout << val << " ";
}
std::cout << std::endl;
std::cout << "Deque элементтері: ";
for (int val : my_deque) {
std::cout << val << " ";
}
std::cout << std::endl;
return 0;
}