天天看点

双向链表list

//list容器可以在任意位置插入、获取、移动元素,不能通过下标获取元素
#include <iostream>
#include <ctime>
#include <vector>
#include <numeric>
#include <list>
using namespace std;
int main()
{
	typedef list<int> LISTINT;//别名
	LISTINT lis;//创建一个list
	
	srand(unsigned int(time(NULL)));
	for (int i = 0; i < 100; i++)
		lis.push_front(rand()% 100);

	/*INSTER*/
	lis.emplace_front(123456);//放到最前边
	lis.insert(lis.begin(), 10);//最前边添加一个10
	lis.insert(lis.end(), 2, 11);//在尾部添加两个11
	vector<int> vect(2,12);
	lis.insert(lis.end(),vect.begin(),vect.end());//在尾部添加vect的从头到尾也就是两个12


	//迭代器遍历
	list<int>::iterator it = lis.begin();
	while (it != lis.end())
	{
		printf("%d\n", *it++);
	}
	
	printf("总和:%d\n", accumulate(lis.begin(), lis.end(), 0));
	printf("元素个数:%d\n", lis.size());

	printf("最大存储元素量:%d\n", lis.max_size());
	lis.clear();//清空list
	/*
	assign() 给list赋值
	back() 返回最后一个元素
	begin() 返回指向第一个元素的迭代器
	clear() 删除所有元素
	empty() 如果list是空的则返回true
	end() 返回末尾的迭代器
	erase() 删除一个元素
	front() 返回第一个元素
	get_allocator() 返回list的配置器
	insert() 插入一个元素到list中
	max_size() 返回list能容纳的最大元素数量
	merge() 合并两个list
	pop_back() 删除最后一个元素
	pop_front() 删除第一个元素
	push_back() 在list的末尾添加一个元素
	push_front() 在list的头部添加一个元素
	rbegin() 返回指向第一个元素的逆向迭代器
	remove() 从list删除元素
	remove_if() 按指定条件删除元素
	rend() 指向list末尾的逆向迭代器
	resize() 改变list的大小
	reverse() 把list的元素倒转
	size() 返回list中的元素个数
	sort() 给list排序
	splice() 合并两个list
	swap() 交换两个list
	unique() 删除list中重复的元素
	*/
	system("pause");
}
           

继续阅读