首页 > STL编程 > STL list示例代码

STL list示例代码

通过这段代码能够熟悉list的一些变动性操作函数的使用。

先来看看书上是怎么介绍的吧。

 

Special Modifying Operations for Lists
Operation
Effect
c.unique()
Removes duplicates of consecutive elements with the same value
c.unique(op)
Removes duplicates of consecutive elements, for which op() yields true
c1.splice(pos,c2)
Moves all elements of c2 to c1 in front of the iterator position pos
c1.splice(pos,c2,c2pos)
Moves the element at c2pos in c2 in front of pos of list c1 (c1 and c2 may be identical)
c1.splice(pos,c2,c2beg,c2end)
Moves all elements of the range [c2beg,c2end) in c2 in front of pos of list c1 (c1 and c2 may be identical)
c.sort()
Sorts all elements with operator <
c.sort(op)
Sorts all elements with op()
c1.merge(c2)
Assuming both containers contain the elements sorted, moves all elements of c2 into c1 so that all elements are merged and still sorted
c1.merge(c2,op)
Assuming both containers contain the elements sorted due to the sorting criterion op(), moves all elements of c2 into c1 so that all elements are merged and still sorted according to op()
c.reverse()
Reverses the order of all elements

下面我简单的翻译一下这些函数的用法:

 

List的特殊变动性操作
操作
效果
c.unique()
如果存在若干相邻的且数值相等的元素,去除重复的元素,只留下一个
c.unique(op)
如果存在若干相邻的且都使得op为true的元素,去除重复的元素,只留下一个
c1.splice(pos,c2)
将c2内的所有元素转移到c1的pos迭代器之前。
c1.splice(pos,c2,c2pos)
将c2内的c2pos所指元素转移到c1的pos迭代器之前
c1.splice(pos,c2,c2beg,c2end)
将c2内[c2beg,c2end]内的所有元素转移到c1的pos迭代器之前
c.sort()
以<为准则对c内的所有元素进行排序
c.sort(op)
以op()为准则对c内的所有元素进行排序
c1.merge(c2)
假设c1和c2内的元素都是有序的,将c2内的元素全部移动到c1之内,且移动后c1仍然保持有序。
c1.merge(c2,op)
假设c1和c2内的元素都是以op为准则有序的,将c2内的元素全部移动到c1之内,且移动后c1仍然保持以op为准则有序。
c.reverse()
将c内所有元素逆序

本文的示例代码如下:

//Coded by www.programlife.net
#include <iostream>
#include <list>
#include <algorithm>
#include <iterator>
using namespace std;

void printLists(const list<int>& l1, const list<int>& l2)
{
	cout << "list1: ";
	copy(l1.begin(), l1.end(), ostream_iterator<int>(cout, " "));
	cout << endl << "list2: ";
	copy(l2.begin(), l2.end(), ostream_iterator<int>(cout, " "));
	cout << endl;
}

int main()
{
	list<int> list1, list2;
	
	for(int i = 0; i < 6; ++i)
	{
		list1.push_back(i);
		list2.push_front(i);
	}
	printLists(list1, list2);
	
	list2.splice(find(list2.begin(), list2.end(), 3), list1);
	printLists(list1, list2);
	
	list2.splice(list2.end(), list2, list2.begin());
	printLists(list1, list2);
	
	list2.sort();
	list1 = list2;
	//unique:如果存在若干相邻且数值相等的元素,则去除重复元素,只留下一个
	list2.unique();
	printLists(list1, list2);
	
	list1.merge(list2);
	printLists(list1, list2);
}

程序运行结果截图:

运行结果截图


觉得文章还不错?点击此处对作者进行打赏!


本文地址: 程序人生 >> STL list示例代码
作者:代码疯子(Wins0n) 本站内容如无声明均属原创,转载请保留作者信息与原文链接,谢谢!


更多



分类: STL编程 标签: , , ,
  1. 2010年9月15日16:48 | #1

    哇 不错的 博客 在学校学c语言的时候有就好了

    [回复]

    admin 回复:

    谢谢支持 看你你毕业了

    [回复]

  1. 本文目前尚无任何 trackbacks 和 pingbacks.