STL list 模板类的所有方法及演示

我只是一个虾纸丫 提交于 2019-12-15 05:02:44

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 << " ";
}

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!