C++ list函数详解
List 容器
list是C++标准模版库(STL,Standard Template Library)中的部分内容。实际上,list容器就是一个双向链表,可以高效地进行插入删除元素。
使用list容器之前必须加上<list>头文件:#include<list>;
list属于std命名域的内容,因此需要通过命名限定:using std::list;也可以直接使用全局的命名空间方式:using namespace std;
list不支持随机访问。所以没有 at(pos)和operator[]。
一、构造、析构函数、=运算符
1、功能:声明list容器。4种方式
list<int>first; // empty list of ints
list<int> second(4,100); // four ints with value 100。4个100
list<int> third(second.begin(),second.end()); //iterating through second
list<int> fourth(third); // a copy of third 2、功能:注销list。~list ();
3、原型:list1 = list2;
功能:将list2赋值给list1,包括list的所有元素以及list2的size
返回值:this指针
二、返回迭代器类的函数
begin、end、rbegin、rend
举例:
Begin指向第一个元素,黄色箭头。end是最后一个元素的后一个位置,黑色箭头。Begin和end一般一起使用,按正序输出list。rbegin指逆序的第一个元素,即最后一个元素,蓝色箭头。rend指逆序的最后一个元素的前一个位置,即第一个元素的前一个位置,红色箭头。
Rbegin和rend一般一起使用,用于逆序输出list。
三、list的容量相关的函数
1、empty
原型:bool empty ( ) const;
功能:判断lsit是否为空,即size是否为0
返回值:size为0,返回true,否则,返回false
2、size
原型:size_type size() const;
功能:返回lsit中元素的个数
返回值:size_type
3、Max_size
原型:size_type max_size () const;
功能:返回lsit的最大容量
返回值:
4、resize
原型:void resize ( size_type sz, T c = T());
功能:重新分配lsit的大小。如果sz小于目前的size就将多余的值删除;如果sz大于目前的size,就在增加容量,且用c填充。例如:
mylist.resize(5);//将size定为5 mylist.resize(8,100);//将size定为8,多出的用100填充 mylist.resize(12);//将size定为12 四、获取元素
1、front
原型:
reference front ( ); const_reference front ( ) const; 功能:获取第一个元素
返回值:第一个元素的值
2、back
原型:reference back ( );
const_reference back ( ) const
功能:获取最后一个元素
返回值:最后一个元素
五、修改lsit的函数
1、assign
原型:void assign ( InputIterator first, InputIterator last );
void assign ( size_type n, const T& u) 功能:为list重新分配空间并赋值。将[first,last)范围内的值或者n次u值的拷贝赋给list
返回值:无
2、push_front:从头插入一个元素。pop_front:删除第一个元素
push_back:在尾部插入一个元素。pop_back:删除最后一个元素
3、insert
功能:插入元素
c.insert(pos,num) 在pos位置插入元素num。
c.insert(pos,n,num) 在pos位置插入n个元素num。
c.insert(pos,beg,end) 在pos位置插入区间为[beg,end)的元素。
4、erase
原型:iterator erase ( iterator position );
iterator erase ( iterator first, iterator last ); 功能:清除链表中position处或者[first,last)范围内的元素。会减少list的size值。
返回值:清除的最后一个元素的下一个位置(迭代器)
5、swap
原型:void swap (list<T,Allocator>&lst)
功能:将两个lsit交换
6、clear
功能:清空list
7、merge
c1.merge(c2) 合并2个有序的链表并使之有序,从新放到c1里,释放c2。
c1.merge(c2,comp) 合并2个有序的链表并使之按照自定义规则排序之后从新放到c1中,释放c2。
8、unique
c1.unique()删除相邻重复元素
9、remove
remove()删除链表中匹配值的元素(匹配元素全部删除)
list对象c1(4,3,5,1,4)
c1.remove(4); //c1(3,5,1);