【STL基础】list
生活随笔
收集整理的這篇文章主要介紹了
【STL基础】list
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
list
構(gòu)造函數(shù):
//default: list<T> l; //空的list//fill: list<T> l(n); //n個元素, 元素默認(rèn)初始化 list<T> l(n, value); //n個元素值為value//range: list<T> l(first, last); //兩個迭代器之間的元素構(gòu)成 list<T> l(arr, arr + sizeof(arr) / sizeof(T)); //由內(nèi)置數(shù)組構(gòu)造//copy: list<T> l(const list<T> &t); //v是u的拷貝//move: list<T> l(list<T> &&x); //x是右值引用(只能引用右值,如list<int> &&x = {1,2,3};)//initializer list: list<T> l{value1, value2...};賦值與swap:
l1 = l2; l1 = { 1, 2, 3 }; l1.swap(l2); swap(l1, l2);大小:
size_type l.size() const noexcept; //元素數(shù)目 size_type l.max_size() const noexcept; //可容納元素的最大數(shù)目 bool l.empty() //是否為空 l.resize(n); l.resize(n, value);獲取元素:
l.front(); //首元素 l.back(); //尾元素修改:
//assign l.assign(n, value); //將v置為n個值為value的元素 l.assign(first, last); //用t的兩個迭代器之間的值為l賦值,左閉右開 t可以是vector、array、list、forward_list、deque、set、unordered_set、multiset、unordered_multiset等。 元素的順序和重復(fù)性由傳入的容器類型性質(zhì)決定 l.assign(begin(t), end(t)); //與上條語句類似,除上述類型,還支持內(nèi)置數(shù)組類型 l.assign(arr, arr + n); //將數(shù)組中的一部分賦給l l.assign({value1, value2...}); //列表 l.push_back(value); //尾部插入一個元素 l.push_front(value); //首部插入一個元素 l.pop_back(); //刪除最后一個元素 l.pop_front(); //刪除第一個元素//insert l.insert(it, value); //迭代器指向的位置插入值為value的元素 l.insert(it, n, value); //迭代器指向的位置插入n個值為value的元素 l.insert(it, first, last); //迭代器it指向的位置插入另一個容器的兩個迭代l之間的元素 l.insert(it, x); //x是T的右值引用 T&& l.insert(it, {value1, value2...}); //列表 //以上函數(shù)返回一個指向新插入的第一個元素的迭代器//emplace(C++11) l.emplace(it, args); //以args為參數(shù),調(diào)用T的構(gòu)造函數(shù)構(gòu)造一個對象插入it所指的位置 l.emplace_back(args); //將構(gòu)造的T對象插入尾部 l.emplace_front(args); //插入前端 //以上函數(shù)返回一個指向新插入的元素的迭代器//erase l.erase(it); //刪除it指向的元素 l.erase(first, last); //刪除范圍內(nèi)的元素 //以上函數(shù)返回一個迭代器,指向被刪除的最后一個元素之后的元素 l.clear(); //刪除所有元素修改:
//splice l.splice(it, x); l.splice(it, x, itx); //x為引用或右值引用,將x的內(nèi)容拼接到it指向的位置處. 該過程不包括構(gòu)造和析構(gòu)過程,而是元素的轉(zhuǎn)移。如果給定itx則是轉(zhuǎn)移x中itx指向的元素 l.splice(it, first, last);list<int> l1 {1,2,3}; list<int> l2 {10, 20, 30}; l1.splice(l1.begin(), l2); //l1: 1, 10, 20, 30, 2, 3 l.remove(value); //刪除所有等于value的元素 l.remove_if(pred); // list::remove_if #include <iostream> #include <list>// a predicate implemented as a function: bool single_digit (const int& value) { return (value<10); } // a predicate implemented as a class: struct is_odd {bool operator() (const int& value) { return (value%2)==1; } }; int main () {int myints[]= {15,36,7,17,20,39,4,1};std::list<int> mylist (myints,myints+8); // 15 36 7 17 20 39 4 1mylist.remove_if (single_digit); // 15 36 17 20 39mylist.remove_if (is_odd()); // 36 20return 0; }l.unique(); l.unique(binary_pred); #include <iostream> #include <cmath> #include <list>// a binary predicate implemented as a function: bool same_integral_part (double first, double second) { return ( int(first)==int(second) ); } // a binary predicate implemented as a class: struct is_near {bool operator() (double first, double second){ return (fabs(first-second)<5.0); } }; int main () {double mydoubles[]={ 12.15, 2.72, 73.0, 12.77, 3.14,12.77, 73.35, 72.25, 15.3, 72.25 };std::list<double> mylist (mydoubles,mydoubles+10);mylist.sort(); // 2.72, 3.14, 12.15, 12.77, 12.77,// 15.3, 72.25, 72.25, 73.0, 73.35mylist.unique(); // 2.72, 3.14, 12.15, 12.77// 15.3, 72.25, 73.0, 73.35mylist.unique (same_integral_part); // 2.72, 3.14, 12.15// 15.3, 72.25, 73.0mylist.unique (is_near()); // 2.72, 12.15, 72.25return 0; }l.merge(x); l.merge(x, comp); // list::merge #include <iostream> #include <list> // compare only integral part: bool mycomparison (double first, double second) { return ( int(first)<int(second) ); } int main () {std::list<double> first, second;first.push_back (3.1);first.push_back (2.2);first.push_back (2.9);second.push_back (3.7);second.push_back (7.1);second.push_back (1.4);first.sort();second.sort();first.merge(second);// (second is now empty)second.push_back (2.1);first.merge(second,mycomparison);std::cout << "first contains:";for (std::list<double>::iterator it=first.begin(); it!=first.end(); ++it)std::cout << ' ' << *it;std::cout << '\n';return 0; } //first contains: 1.4 2.2 2.9 2.1 3.1 3.7 7.1 l.sort(); l.sort(comp); bool compare_nocase (const T &first, const T &second);l.reverse();獲取迭代器:
l.begin(), l.end(); //首元素位置,尾后位置 l.cbegin(), l.cend(); //const_iterator//reverse_iterator 按逆序?qū)ぶ?//const_reverse_iterator l.rbegin(), l.rend(); l.crbegin(), l.crend();begin(l), end(l);?
轉(zhuǎn)載于:https://www.cnblogs.com/dengeven/p/3737913.html
總結(jié)
以上是生活随笔為你收集整理的【STL基础】list的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mcgs 云服务器,MCGS软件系统的组
- 下一篇: 学Python可以做Web前端开发吗?