1、非变动性算法既不改变元素的值,也不改变元素的顺序
for_each() 对每个元素执行某操作
count() 返回元素个数
count()_if() 返回满足某一条件的元素个数
min_element() 返回最小值元素
max_element() 返回最大值元素
find() 搜索等于某个值的第一个元素
find_if() 搜索满足某个条件的第一个元素
search_n() 搜索具有某特性的第一段n个连续元素
search() 搜索某个子区间第一次出现位置
find_end() 搜索某个子区间最后一次出现位置
find_first_of() 搜索等于"某数个值之一"的第一元素
adjacent_find() 搜索连续两个相等的元素
equal() 判断两区间是否相等
mismatch() 返回两个序列的各组对应元素中,第一对不相等元素
// 78cpp.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
#include <vector>
#include <algorithm>
#include <list>
using namespace std;
//利用函数对象
class GreaterObj
{
public:
GreaterObj(int number):number_(number){}
bool operator()(int n){
return n>number_;
}
protected:
private:
int number_;
};
//打印元素
void printElement(int n1)
{
cout<<n1<<' ';
}
//找出大于3的元素位置
bool greater_than_3(int n2)
{
return n2>3;
}
int _tmain(int argc, _TCHAR* argv[])
{
int bb[]={1,2,3,4,5};
vector<int> v(bb,bb+5);
vector<int>::const_iterator it;
list<int> li;
list<int>::const_iterator ltList;
for (it=v.begin();it!=v.end();it++)
{
cout<<*it<<" ";
//cout<<endl;
}
cout<<endl;
//for_each使用
for_each(v.begin(),v.end(),printElement);
cout<<endl;
for (it=v.begin();it!=v.end();it++)
{
cout<<*it<<" ";
//cout<<endl;
}
cout<<endl;
//min_element使用
it=min_element(v.begin(),v.end());
if (it!=v.end())
{
cout<<*it<<endl;
}
//max_element使用
it=max_element(v.begin(),v.end());
if (it!=v.end())
{
cout<<*it<<endl;
}
//find使用
it=find(v.begin(),v.end(),6);
if (it!=v.end())
{
cout<<it-v.begin()<<endl;
}else{
cout<<"not found"<<endl;
}
//find_if使用
it=find_if(v.begin(),v.end(),greater_than_3);
if (it!=v.end())
{
cout<<*it<<endl;
}else{
cout<<"not found"<<endl;
}
int j=2;
for (j=2;j<4;j++)
{
li.push_back(j);
}
for_each(li.begin(),li.end(),printElement);
cout<<endl;
//search使用
vector<int>::iterator result;
result=search(v.begin(),v.end(),li.begin(),li.end());
if (result==v.end())
{
cout<<"not match...of li in v";
}
else
{
cout<<"match...of li in v"<<endl;
cout<<result-v.begin();
}
int a[]={1,2,3,4,5};
cout<<count_if(a,a+5,GreaterObj(3))<<endl;利用函数对象,统计大于3的元素个数
return 0;
}