list — контейнер, позволяющий выполнять операции вставки и удаления данныхв любом месте последовательности с постоянным временем, а также осуществлять итерации в обоих направлениях.
#include "stdafx.h" #include <list> #include <iostream> using namespace std; bool del_number_if (const int& value) { return (value>90); } int _tmain(int argc, _TCHAR* argv[]) { std::list<int>::iterator iter; int myints[] = {14,27,93,38,15,32,94,57,49,73}; list<int> my_list(myints,myints+10); list<int> my_list_new1; my_list_new1.assign (myints,myints+3); list<int> my_list_new2(7,500); my_list_new2.resize(4); my_list_new1.swap(my_list_new2); for (std::list<int>::iterator it=my_list_new1.begin(); it!=my_list_new1.end(); it++) { std::cout << ' ' << *it; } cout<<endl; cout<<my_list.size()<<endl; while (!my_list.empty()) { cout<<"list not empty"<<endl; break; } for (std::list<int>::iterator it=my_list.begin(); it != my_list.end(); ++it) { std::cout << ' ' << *it; } cout<<endl; cout<<my_list.front()<<endl; cout<<my_list.back()<<endl; for (std::list<int>::reverse_iterator rit=my_list.rbegin(); rit != my_list.rend(); ++rit) { std::cout << ' ' << *rit; } cout<<endl; my_list.push_front(7); my_list.push_front(7); my_list.push_back(9); my_list.push_back(9); for (std::list<int>::iterator it=my_list.begin(); it != my_list.end(); ++it) { std::cout << ' ' << *it; } cout<<endl; my_list.pop_front(); my_list.pop_front(); my_list.pop_back(); my_list.pop_back(); iter = my_list.begin(); my_list.insert (iter,2,10); // вставка в начало двух элементов my_list.erase (iter); // удаление первого элемента списка my_list.remove(15); // удаление цифры 15 my_list.remove_if(del_number_if); // удаление значений меньше 90 my_list.unique(); // удаление повторяющихся значений my_list.sort(); my_list.reverse(); for (std::list<int>::iterator it=my_list.begin(); it != my_list.end(); ++it) { std::cout << ' ' << *it; } cout<<endl; my_list.clear(); // очищаем список system("pause"); return 0; }
Результат работы программы list (список) на C++: