STL-list
一、List的构造函数
list<int>lis;//创建一个空list list<int>lis1(5);//创建一个大小为5的初始化为值为0的list{0,0,0,0,0} list<int>lis2(5,9);//创建一个大小为5,值都为9的list{9,9,9,9,9} list<int>lis3(lis2);//利用拷贝构造了一个lis2副本的list{9,9,9,9,9} list<int>lis4(lis3.begin(), lis3.end());//以区间创建了一个list{9,9,9,9,9} int a[] = { 1,3,5,2,4,6 }; list<int>lis5(a,a+6);//以数组创建了一个list{1,3,5,2,4,6} //以输入流迭代器创建了一个list,其中第一个参数必须加(),否则创建的不是list而是一个函数声明 list<int>lis6((istream_iterator<int>(cin)),istream_iterator<int>());
二、List非变动操作
lis.size();//返回lis中的当前元素个数 lis.empty();//判断lis是否为空,空返回true;其效率高于lis.size(0); lis.max_size();//返回v最大容纳元素的个数 lis == lis1;//判断lis是否等于lis1 lis != lis1;//判断lis是否不等于lis1 lis > lis1;//判断lis是否大于lis1 lis < lis1;//判断lis是否小于lis1 lis <= lis1;//判断lis是否小于等于lis1 lis >= lis1;//判断lis是否大于等于lis1
三、List赋值操作
lis.assign(8, 10);//将n个值为elem的元素赋值给v lis.assign(lis1.begin(), lis1.end());//将lis1区间的元素赋值为lis lis = lis1;//将lis1赋值为lis lis.swap(lis1);//交换v与lis1的元素 swap(lis, lis1);//同上,此为全局函数
四、List元素读取
lis.back();//返回最后一个元素,不检查最后一个元素是否存在 lis.front();//返回第一个元素,不检查第一个元素是否存在
五、List的相关迭代器函数
lis.begin();//返回指向第一个元素的迭代器 lis.end();//返回指向最后元素下一个位置的迭代器 lis.rbegin();//返回指向最后一个元素的迭代器 lis.rend();//返回指向第一个元素前一个位置的迭代器 lis.cbegin();//返回指向第一个元素的常迭代器 lis.cend();//返回指向最后元素下一个位置的常迭代器 lis.crbegin();//返回指向最后一个元素的常迭代器 lis.crend();//返回指向第一个元素前一个位置的常迭代器
六、List的元素插入操作
int elem = 2,n = 3; lis.push_back(elem);//在末尾插入元素 lis.push_front(elem);//在头部插入元素 lis.insert(lis.begin(), elem);//在某位置前插入元素 lis.insert(lis.end(), n, elem);//在某位置前插入n个值为elem的元素 lis.insert(lis.begin(), lis1.begin(), lis1.end());//在某位置前插入一段区间元素
\
七、List的删除操作
lis.pop_back();//末尾删除 lis.pop_front();//头部删除 lis.erase(lis.begin());//指定位置上的元素删除 lis.erase(lis.begin(), lis.end());//指定区间中的元素删除 lis.clear();//全部元素清除 lis.remove(elem);//移除元素elem lis.remove_if(op);//移除所有满足条件op的元素值 lis.resize(6);//将元素的数量改为形参数,如果其大于size则多出来的元素值由default构造完成,小于size截取后半段 lis.resize(6, 10);//将元素的数量改为形参数,如果其大于size则多出来的元素值为elem,小于size截取后半段
八、List特殊变动操作
lis5.sort();//以operator<为准则,对所有元素排序 lis5.unique();//如果存在若干相邻数值相等的元素,就移除重复元素; lis5.splice(lis5.end(), lis3);//将lis3的全部元素移动到lis5的pos位置前; lis5.merge(lis3);//若lis5与lis3包含相同类型元素,将lis3的全部元素转移到lis5,并保证合并后的lis5继续已序
lis5.reverse();//将所有元素反转