list列表实现为一个双向链表。对外接口大部分与vector和deque相同,
1、创建对象
list<T> it;//创建一个空的列表对象
list<T> it(n);//创建一个大小为N的列表对象
list<T> it(n, elem);//创建一个列表对象,包含n个elem元素
list<T> it(begin, end);//创建一个列表对象,用[begin,end)区间的值为元素赋值
list<T> it(it1);//创建一个列表对象,用另一个对象初始化
创建方法:
list<char> it1;
list<int> it2(10);
list<float> it3<10, 1.2>;
list<string> it4 < begin, end);
list<float> li5(lit3); //拷贝构造函数
2、赋值
与vector和deque一样,list列表提供了assign()函数为列表容器赋值下面是函数的调用形式:
it.assign(n,elem); //将n个elem元素的值赋给it
ie.assign(begin,end); //用[begin,end)区间的值给it中的元素赋值
3、元素访问
列表是由链表实现的内存区域不连续,也没有随机访问元素的at方法,因此无法用下标法访问,但他提供了下列方法用于访问容器中的元素:
it.front(); //返回第一个元素
it.back(); //返回最后一个元素
it.begin(); //返回第一个元素的迭代器
it.end(); // 返回指向最后一个元素的迭代器
4、添加元素
it.push_back(); //在尾部插入元素
it.push_front(); //在头部插入元素
it.insert(pos, elem); //在pos位置插入元素elem
it.insert(pos, n, elem); //在pos位置插入n个元素elem
it.insert(pos, begin, end); //在pos位置上插入[begin,end)区间之间的值作为元素
5、删除元素
it.pop_back(); //重尾部删除
it.pop_front(); //从头部删除元素
it.erase(pos); //从中间删除元素
it.erase(begin, end); //删除[begin,end)区间中的元素
it.remove(elem); //删除与elem匹配的元素
#include<iostream>
#include<list>
using namespace std;
template<typename T>
void print(list<T> mylist)//定义print函数输出list容器中的元素
{
//list<T>::iterator it;//创建列表迭代器
for (list<T>::iteraotr it = mylist.begin(); it != mylist.end(); it++)
cout << *it << " ";
cout << endl;
}
int main()
{
list<int> lt;
for (int i = 0; i < 10; i++)
lt.push_back(i + 1);
cout << "输出list中的元素:" << endl;
print(lt);
lt.pop_back();
lt.push_front(5);
cout << "再次输出list容器中的元素:" << endl;
print(lt);
lt.remove(5);
cout << "删除5之后输出list中的容器:" << endl;
print(lt);
return 0;
}
6、merge()函数
函数merge()可以将两个函数合并功能是把一个list对象作为参数插入到目标list容器中
lt.merge(list& lt1);
两个容器合并之后,容器中的元素按照从小到大顺序排列,而且合并之后,lt1容器变成空容器,
7、sort()函数
使容器中的元素从小到大排列,
lt.sort();
#include<list>
using namespace std;
template<typename T>
void print(list<T> mylist)
{
list<T>::iterator it;
for (it = mylist.begin(); it != mylist.end(); it++)
cout << *it << " ";
cout << endl;
}
int main()
{
list<int> lt1, lt2;
lt1.push_back(12);
lt1.push_back(11);
lt1.push_back(10);
lt2.push_front(9);
lt2.push_front(8);
cout << "lt1";
print(lt1);
cout << "lt2";
print(lt2);
lt1.sort();
cout << "排序之后lt1:";
print(lt1);
lt1.merge(lt2);
cout << "lt2合并给lt1";
print(lt1);
system("pause");
return 0;
}
8、splice()函数