C++顺序容器之list初探

C++顺序容器之list初探

双向链表,支持双向顺序访问。在list中任何位置进行插入和删除速度都很快。
list不支持随机访问,为了访问一个元素,必须遍历整个容器。

#include<iostream>
#include<list>
#include<algorithm>
using namespace std;
void printList(const list<int>& a);
void printList(const list<int>& a)
{
	// 注意形参中是const list,所以下面也需要用const_iterator
	// 否则distance无法使用
	list<int>::const_iterator iter;
	for (iter = a.begin(); iter != a.end(); ++iter)
	{
		size_t index = distance(a.begin(), iter);
		cout << "a[" << index << "] = " << *iter << endl;
	}
	cout << endl;
}
int main()
{
	list<int> a;
	// push_front、push_back插入数据
	a.push_front(4);
	a.push_front(3);
	a.push_front(2);
	a.push_front(1);
	a.push_back(50);
	printList(a);

	// insert插入数据
	list<int>::iterator iter;
	iter = a.begin();
	a.insert(iter, 0);
	a.insert(++iter, 10);
	a.insert(++iter, 4, 20); // 插入4个20
	printList(a);

	
	// sort排序
	cout << "sort排序" << endl;
	a.sort();
	printList(a);

	// reverse逆序
	cout << "reverse逆序" << endl;
	a.reverse();
	printList(a);

	// erase删除指定元素
	cout << "erase删除指定元素" << endl;
	a.erase(iter);
	printList(a);

	// erase删除指定区间的元素
	cout << "erase删除指定区间元素" << endl;
	a.erase(++a.begin(), --a.end());
	printList(a);

	system("pause");
	return 0;
}
原文地址:https://www.cnblogs.com/liutongqing/p/7506688.html