list 简介
c++ 中list 是 双向链表容器,不支持随机访问,不过list 的插入和删除动作很快,
list 也是属于RTL标注模板库里面的所以使用的需要先引入#include <list>
list 初始化的方法
#include <iostream>
#include <string>
using namespace std;
#include <list>
int main()
{
// 创建一个空的list
list<int> a;
cout << a.size() << endl;
// 创建一个10个元素对象
list<int> b(10);
// 创建5个元素且5个元素都为明天
cout << b.size() << endl;
list<string> c(5, "明天");
list<string>::iterator it;
for (it = c.begin(); it != c.end(); it++)
{
cout << *it << endl;
}
return 0;
}
list方法说明
函数 | 说明 |
assign(first,last) | 用迭代器first和last所在元素替换list元素 |
assign(num,val) | 用val的num个副本替换list元素 |
begin | list中第一个元素的引用 |
back | list中最后一个元素的引用 |
size | 返回list的个数 |
front | 获取list中第一个元素 |
end | 获取list中最后一个元素 |
empty | 判断list是否为空,为空返回true |
clear | 清空list元素 |
pop_back | 删除list中最后一个元素 |
pop_front | 删除list中第一个元素 |
rbegin | 返回一个反向迭代器,指向list末尾元素之后 |
rend | 返回一个反向迭代器,指向list起始元素 |
erase(i) | 删除第i位置的元素(注意不能直接为数组,需要用begin或者end) |
erase(start,end) | 删除指定的元素返回,注意是前包含后不包含,里面不能是数字 |
insert(i,x) | 把 i 插入到x位置 |
insert(i,x,y) | 把 i 插入到x到y 的位置 |
swap | 与另一个vector交换数据 |
demo 练习
#include <iostream>
#include <string>
using namespace std;
#include <list>
int main()
{
// 声明一个int 类型list
list<string> list_name;
// 获取默认list的size
cout << list_name.size() << endl;
//在末尾位置添加元素
list_name.push_back("赵");
list_name.push_back("钱");
list_name.push_back("孙");
list_name.push_back("李");
// 获取list的size
cout << list_name.size() << endl;
// 开始的位置插入元素
list_name.insert(list_name.begin(), "百家姓:");
// 结束的位置插入元素
list_name.insert(list_name.end(), "ok");
// 删除第一个元素
list_name.pop_front();
// 删除最后一个元素
list_name.pop_back();
//使用迭代器遍历元素
list<string>::iterator it;
for (it = list_name.begin(); it != list_name.end(); it++)
{
cout << *it << endl;
}
// 获取list第一个元素
cout << "第一个元素:" << list_name.front() << endl;
// 获取list最后一个元素
cout << "最后一个元素:" << list_name.back() << endl;
// list判空
if (list_name.empty())
{
cout << "list为空" << endl;
}
else
{
cout << "list不为空" << endl;
}
// 清空list
list_name.clear();
return 0;
}