STL——list常见用法

list是C++标准模版库(STL,Standard Template Library)中的部分内容。实际上,list容器就是一个双向链表,可以高效地进行插入删除元素,但是随机访问却比较慢。

使用list容器之前必须加上STL的list容器的头文件:

#include<list>;

 

二、List定义和初始化:

  •     list<int>lst1;          //创建空list
  •     list<int> lst2(5);       //创建含有5个元素的list
  •     list<int>lst3(3,2);  //创建含有3个元素的list
  •     list<int>lst4(lst2);    //使用lst2初始化lst4
  •     list<int>lst5(lst2.begin(),lst2.end());  //同lst4

三、List常用操作函数:

1.删除头尾元素

c++的stl list 提供pop_back和pop_front()函数来删除第一个和最后一个元素。

pop_back和pop_front()

通过删除最后一个元素,通过pop_front()删除第一个元素;序列必须不为空,如果当list为空的时候调用pop_back()和pop_front()会使程序崩掉。

2.删除所有元素

简单粗暴的方法:调用clear()

List.clear();

3.删除指定位置

std::list 是一个双向链表,对它的遍历大部分都是使用list<T>::iterator it;

删除操作:it =List->erase(it++);

PS:需要返回it,因为it是正在遍历的指针;删除后如果直接返回就无法继续遍历后面的队列了,会报错;

所以使用List->erase(it++)


 

4.插入元素

insert():在指定位置插入一个或多个元素(三个重载):

l1.insert(l1.begin(),100); 在l1的开始位置插入100。

l1.insert(l1.begin(),2,200); 在l1的开始位置插入2个100。

l1.insert(l1.begin(),l2.begin(),l2.end());在l1的开始位置插入l2的从开始到结束的所有位置的元素。

 

5.assign()

具体和vector中的操作类似,也是有两种情况,第一种是:l1.assign(n,val)将 l1中元素变为n个T(val)。第二种情况是:l1.assign(l2.begin(),l2.end())将l2中的从l2.begin()到l2.end()之间的数值赋值给l1。

函数总结:

Lst1.assign() 给list赋值 
Lst1.back() 返回最后一个元素 
Lst1.begin() 返回指向第一个元素的迭代器 
Lst1.clear() 删除所有元素 
Lst1.empty() 如果list是空的则返回true 
Lst1.end() 返回末尾的迭代器 
Lst1.erase() 删除一个元素 
Lst1.front() 返回第一个元素 
Lst1.get_allocator() 返回list的配置器 
Lst1.insert() 插入一个元素到list中 
Lst1.max_size() 返回list能容纳的最大元素数量 
Lst1.merge() 合并两个list 
Lst1.pop_back() 删除最后一个元素 
Lst1.pop_front() 删除第一个元素 
Lst1.push_back() 在list的末尾添加一个元素 
Lst1.push_front() 在list的头部添加一个元素 
Lst1.rbegin() 返回指向第一个元素的逆向迭代器 
Lst1.remove() 从list删除元素 
Lst1.remove_if() 按指定条件删除元素 
Lst1.rend() 指向list末尾的逆向迭代器 
Lst1.resize() 改变list的大小 
Lst1.reverse() 把list的元素倒转 
Lst1.size() 返回list中的元素个数 
Lst1.sort() 给list排序 
Lst1.splice() 合并两个list 
Lst1.swap() 交换两个list 
Lst1.unique() 删除list中重复的元素

四、List使用示例:

示例1:遍历List

    //迭代器法

for(list<int>::const_iteratoriter = lst1.begin();iter != lst1.end();iter++)
{
    cout<<*iter;
}

猜你喜欢

转载自blog.csdn.net/weixin_42513339/article/details/89260674
今日推荐