algorithm库函数集合
不修改内容的序列操作:修改内容的序列操作:划分操作:排序操作:二分法查找操作:集合操作:堆操作:最大/最小操作:附上 巡防算法for_each(容器起始地址,容器结束地址,要执行的方法)[html]view plaincopy#include<iostream>#include<al...
·
不修改内容的序列操作:
修改内容的序列操作:
划分操作:
排序操作:
二分法查找操作:
集合操作:
堆操作:
最大/最小操作:
附上 巡防算法
for_each(容器起始地址,容器结束地址,要执行的方法)
[html] view plain copy
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
template<class T>
struct plus2
{
void operator()(T&x)const
{
x+=2;
}
};
void printElem(int& elem)
{
cout << elem << endl;
}
int main()
{
int ia[]={0,1,2,3,4,5,6};
for_each(ia,ia+7,printElem);//输出
int ib[]={7,8,9,10,11,12,13};
vector<int> iv(ib,ib+7);
for_each(iv.begin(),iv.end(),plus2<int>());//更改元素
for_each(iv.begin(),iv.end(),printElem);//输出
return 0;
}
lower_bound( )与upper_bound( )用法
这两个函数都是求序列中第一个比键值大(区别于等于)的元素的地址
如果要求第一个比键值小的元素的地址,则需要自定义函数或者使用greater
其中start和end是序列的地址
bool cmp(const int &a,const int &b)/自定义函数,
{
return a>b;
}
int main()
{
upper_pound(start,end,key);
//返回区间[start, end]中第一个>key元素的地址
lower_pownd(start,end,key);
//返回区间[start, end]中第一个>=key元素的地址
-----------------------------------------------------
lower_pound(start,end,key,cmp);
//返回区间[start, end]中第一个 <=key元素的地址
lower_bound(star,end,key,greater<int>());
//返回区间[start, end]中第一个 <=key元素的地址
upper_pound(start,end,key,cmp);
//返回区间[start, end]中第一个<key元素的地址
upper_pound(start,end,key,greater<int>());
//返回区间[start, end]中第一个<key元素的地址
}
更多推荐
已为社区贡献1条内容
所有评论(0)