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();//将所有元素反转

 

posted @ 2020-07-11 14:00  dhhu007  阅读(119)  评论(0编辑  收藏  举报