今回はlistです。
#include <iostream> #include <list> int main() { std::list<int> l; // vector同様push_back()で要素を追加できる l.push_back(1); l.push_back(2); // push_front()でも追加可能 l.push_front(3); l.push_front(4); std::cout << "要素を追加" << std::endl; // vector同様iteratorでアクセス可能 for(std::list<int>::iterator it = l.begin(); it != l.end(); ++it) std::cout << *it << " "; std::cout << std::endl; // pop_front()で先頭要素を削除 l.pop_front(); // pop_back()で最終要素を削除 l.pop_back(); std::cout << "先頭 : " << l.front() // 先頭要素への参照 << " 最終 : " << l.back() << std::endl; // 最終要素への参照 l.clear(); // clear()で全消去 l.assign(10, 5); for(std::list<int>::iterator it = l.begin(); it != l.end(); ++it) std::cout << *it << " "; std::cout << std::endl; l.push_back(1); l.push_back(2); l.push_back(3); l.push_back(4); l.remove(5); // "5"の要素をすべて削除 for(std::list<int>::iterator it = l.begin(); it != l.end(); ++it) std::cout << *it << " "; std::cout << std::endl; l.remove_if([](int i){return i % 2;}); // 奇数をすべて削除 for(std::list<int>::iterator it = l.begin(); it != l.end(); ++it) std::cout << *it << " "; std::cout << std::endl; l.erase(l.begin(), l.end()); // 最初から最後まで削除 l.push_back(1); l.push_back(2); l.push_back(3); l.push_back(4); l.push_back(5); l.push_back(6); l.push_back(7); std::list<int> l2; l2.push_back(3); l2.push_back(6); l2.push_back(9); // lの最初の要素の次にl2を挿入する l.splice(++l.begin(), l2); for(std::list<int>::iterator it = l.begin(); it != l.end(); ++it) std::cout << *it << " "; std::cout << std::endl; // l2の中身はからになる for(std::list<int>::iterator it = l2.begin(); it != l2.end(); ++it) std::cout << *it << " "; std::cout << std::endl; l2.push_back(3); l2.push_back(6); l2.push_back(9); l.insert(++l.begin(), l2.begin(), l2.end()); for(std::list<int>::iterator it = l.begin(); it != l.end(); ++it) std::cout << *it << " "; std::cout << std::endl; // insertならl2の中身は空にならない for(std::list<int>::iterator it = l2.begin(); it != l2.end(); ++it) std::cout << *it << " "; std::cout << std::endl; l.sort(); // sort()でソートできる for(std::list<int>::iterator it = l.begin(); it != l.end(); ++it) std::cout << *it << " "; std::cout << std::endl; // merge()で良い感じに挿入される l.merge(l2); for(std::list<int>::iterator it = l.begin(); it != l.end(); ++it) std::cout << *it << " "; std::cout << std::endl; // unique()でダブりをなくす l.unique(); for(std::list<int>::iterator it = l.begin(); it != l.end(); ++it) std::cout << *it << " "; std::cout << std::endl; return 0; }
結果
要素を追加 4 3 1 2 先頭 : 3 最終 : 1 5 5 5 5 5 5 5 5 5 5 1 2 3 4 2 4 1 3 6 9 2 3 4 5 6 7 1 3 6 9 3 6 9 2 3 4 5 6 7 3 6 9 1 2 3 3 3 4 5 6 6 6 7 9 9 1 2 3 3 3 3 4 5 6 6 6 6 7 9 9 9 1 2 3 4 5 6 7 9
あんまり使ったこと無かったんですが、sortとuniqueがそのまま使えるのは便利なきがします