list 的所有方法及演示(每一种方法的演示为单独的,不演示空间适配器)
首先包含我们的 头文件和命名空间:
#include <iostream>
#include <list>
using std::cout;
using std::endl;
using std::list;
所有的方法及演示在下面的框架中实现:
int main()
{
.
.
.
return 0;
}
首先我们定义五个容量用于演示:
list<int> list_arr1; // 默认构造
list<int> list_arr2(5, 3); // 构造五个元素的容器,并赋值为 3
list<int> list_arr3(10, 2); // 构造十个元素,并赋值为 2
list<int> list_arr4(list_arr3); // 复制构造
list<int> list_arr5 = list_arr4; // 赋值运算符重载
assign 重新设置元素个数 和值:
list_arr1.assign(5, 5); // 重新容器元素为五个 且值为五
for (auto& i: list_arr1) // C++ 11
{
cout << i << " ";
}
cout << endl;
结果为:
5 5 5 5 5
back 返回最后一个元素
front 返回第一个元素:
cout << list_arr3.back() << endl;
cout << list_arr3.front() << endl;
2
2
clear 删除所有元素:
list_arr3.clear(); // 删除list_arr3 的所有元素
cout << *list_arr3.begin() << endl; // 报错
empty 判空:
cout << list_arr1.empty() << endl;
结果为:
1
erase 删除一个指定位置的元素:
list_arr3.erase(list_arr3.begin());
for(auto& i: list_arr3)
{
cout << i << " ";
}
结果为:
2 2 2 2 2 2 2 2 2
insert 插入一个元素到 list 中:
list_arr1.insert(list_arr1.begin(), 20);
cout << *list_arr1.begin() << endl;
结果:
20
max_size() 返回list能容纳的最大元素数量:
cout << list_arr1.max_size() << endl;
结果为:
357913941
size 返回 list 中元素个数:
cout << list_arr3.size() << endl;
结果为:
10
push_back 在 list的末尾添加一个元素
push_front 在 list的头部添加一个元素:
list_arr3.push_back(30);
list_arr3.push_front(50);
for(auto& i: list_arr3) // C++ 11
{
cout << i << " ";
}
结果为:
50 2 2 2 2 2 2 2 2 2 2 30
sort 给list排序:
list_arr3.push_front(50);
list_arr3.sort();
for(auto& i: list_arr3)
{
cout << i << “ ”;
}
结果为:
2 2 2 2 2 2 2 2 2 2 50
unique 删除list中重复的元素:
list_arr3.unique();
for(auto& i: list_arr3) // C++ 11
{
cout << i << " ";
}
结果为:
2
pop_back 删除最后一个元素
pop_front 删除第一个元素:
list_arr3.push_back(30);
list_arr3.push_front(50);
for(auto& i: list_arr3)
{
cout << i << " ";
}
cout << endl;
list_arr3.pop_back();
list_arr3.pop_front();
for(auto& i: list_arr3)
{
cout << i << " ";
}
结果为:
50 2 2 2 2 2 2 2 2 2 2 30
2 2 2 2 2 2 2 2 2 2
splice 剪切元素 到指定位置之前:
list_arr3.splice(list_arr3.begin(), list_arr2);
for(auto& i: list_arr3)
{
cout << i << " ";
}
结果为:
3 3 3 3 3 2 2 2 2 2 2 2 2 2 2
swap 交换两个 list
list_arr2.swap(list_arr3);
for(auto& i: list_arr2)
{
cout << i << " ";
}
结果为:
2 2 2 2 2 2 2 2 2 2
remove 从list 删除元素:
list_arr2.remove(3);
for (auto& i : list_arr2) // C++ 11
{
cout << i << " ";
}
remove_if 按指定条件删除元素:
list_arr2.remove_if([&] (int n) { return n % 2 == 1; }); // 结果为空
for(auto& i: list_arr2)
{
cout << i << " ";
}
reverse 把list 的元素倒转:
list_arr2.push_back(30);
list_arr2.reverse();
for(auto& i: list_arr2)
{
cout << i << " ";
}
结果为:
30 3 3 3 3 3
resize 改变 list元素的大小:
list_arr1.resize(5);
cout << list_arr1.size() << endl;
结果为:
5
rbegin 返回指向第一个元素的逆向迭代器
rend 指向 list末尾的逆向迭代器:
list_arr2.push_back(30);
for(auto p = list_arr2.rbegin(); p != list_arr2.rend(); p++)
{
cout << *p << endl;
}
结果为:
30 3 3 3 3 3
merge 合并两个 list:
list_arr3.push_front(30);
list_arr3.sort();
list_arr2.merge(list_arr3); // 合并前 两个 容器必须是排序好的
for(auto& i: list_arr2)
{
cout << i << " ";
}
来源:CSDN
作者:花 梦
链接:https://blog.csdn.net/weixin_42100963/article/details/103457386