STL

来源:互联网 发布:ubuntu 安装类型 win7 编辑:程序博客网 时间:2024/04/27 21:48

|全排列函数next_permutation

STL中专门用于排列的函数(可以处理存在重复数据集的排列问题)

头文件:#include <algorithm> using namespace std;

调用:next_permutation(start, end);

注意:函数要求输入的是一个升序排列的序列的头指针和尾指针.

例子:

vector<int> myVec;

sort(myVec.begin(),myVec.end());

do{

for (i = 0 ;i < size;i ++ ) cout <<myVec[i] << " /t " ;

cout << endl;

}while (next_permutation(myVec.begin(),myVec.end()));

ACM/ICPC竞赛之STL--pair

STL<utility>头文件中描述了一个看上去非常简单的模板类pair

除了直接定义一个pair对象外,如果需要即时生成一个pair 对象,也可以调用在<utility>中定义的一个模板函数:make_pairmake_pair需要两个参数,分别为元素对的首元素和尾元素。

ACM/ICPC竞赛之STL--iterator 简介

iterator(迭代器)是用于访问容器中元素的指示器,从这个意义上说,

iterator(迭代器)相当于数据结构中所说的遍历指针,也可以把

iterator(迭代器)看作是一种泛化的指针。

ACM/ICPC竞赛之STL--stack/queue

3priority_queue

priority_queue(优先队列)。默认容器为vector,默认算子为less,即小的往前排,大的往后排(出队时序列尾的元素出队)。

定义priority_queue对象的示例代码如下:

priority_queue<int> q1;

priority_queue< pair<int, int> >q2; //注意在两个尖括号之间一定要留空格。

priority_queue<int, vector<int>,greater<int> > q3; //定义小的先出队

 (less算子,调用x<y,对greater 算子,调用x>y)

ACM/ICPC竞赛之STL--map

STL的头文件<map>中定义了模板类mapmultimap,用有序二叉树来存贮类型为pair<constKey, T>的元素对序列。序列中的元素以const Key部分作为标识,map中所有元素的Key 值都必须是唯一的,multimap 则允许有重复的Key值。

2、向map中插入元素对,有多种方法,例如:

m[key] = value;

[key]操作是map很有特色的操作,如果在map 中存在键值为key 的元素对,则返回该元素对的值域部分,否则将会创建一个键值为key的元素对,值域为默认值。所以可以用该操作向map 中插入元素对或修改已经存在的元素对的值域部分。

m.insert( make_pair(key, value) );

3、查找元素对,例如:int i = m[key];

要注意的是,当与该键值相匹配的元素对不存在时,会创建键值为key的元素对。

map<string, int>::iterator it =m.find(key);

如果map中存在与key 相匹配的键值时,find操作将返回指向该元素对的迭代器,否则,返回的迭代器等于map end()

4、删除元素对,例如:

m.erase(key);

删除与指定key键值相匹配的元素对,并返回被删除的元素的个数。

m.erase(it);

删除由it所指定的元素对,并返回指向下一个元素对的迭代器。

示例程序之二,min_element/max_element,找出容器中的最小/最大值:

vector<int>::iterator min_it =min_element(L.begin(),L.end());

vector<int>::iterator max_it =max_element(L.begin(),L.end());

cout << "Min is " <<*min_it << endl;

cout << "Max is " <<*max_it << endl;

2. binary_search()

bool binary_search(ForwardIterator first,ForwardIterator

last, const LessThanComparable& value);

[first,last)中查找value,如果找到返回Ture,否则返回False

二分检索,复杂度O(log(last-first))

itr upper_bound(first, last, value, cmp);

//itr指向大于value 的第一个值(或容器末尾)

itr lower_bound(first, last, value, cmp);

//itr指向不小于valude 的第一个值(或容器末尾)

 

0 0
原创粉丝点击