/*for_each 对范围中的每个元素调用指定函数*/
#include
#include
#include
using namespace std; void myfunction(int i){ cout<<" " <
myvector; myvector.push_back(10); myvector.push_back(20); myvector.push_back(30); cout<<"myvector contains: "; for_each(myvector.begin(), myvector.end(), myfunction); cout<
/*mismatch 返回两个范围中第一个元素不等价的位置*/
#include
#include
#include
#include
using namespace std; bool mypredicate(int i ,int j){ return (i == j); } int main(int argc, const char * argv[]) { vector
myvector; for (int i = 1; i < 6; i++) myvector.push_back(i * 10); int myints[] = {10,20,80,320,1024}; pair
::iterator, int*> mypair; //using default xomparison: mypair = mismatch(myvector.begin(), myvector.end(), myints); cout<<"First mismatching elements: "<<*mypair.first; cout<< " and " <<*mypair.second<
/*none_of 检测在给定范围中是否不存在元素满足给定的条件*/
#include
#include
#include
using namespace std; int main(int argc, const char * argv[]) { array
foo = {1,2,4,8,16,32,64,128}; if (none_of(foo.begin(), foo.end(), [](int i){return i < 60;})) { cout<<"There are no negative elements in the range."<
/*search 在范围 A 中查找第一个与范围 B 等价的子范围的位置*/
#include
#include
#include
using namespace std; bool mypredicate(int i,int j){ return (i == j); } int main(int argc, const char * argv[]) { vector
haystack; for (int i = 1; i < 10; i++) haystack.push_back(i * 10); //using default comparison int needle1[] = {20,30,40,50}; vector
::iterator it; it = search(haystack.begin(), haystack.end(), needle1, needle1 + 4); if (it != haystack.end()) cout<<"needle1 found at position " << (it - haystack.begin()) <
/*search_n 在给定范围中查找第一个连续 n 个元素都等价于给定值的子范围的位置*/
#include
#include
#include
using namespace std; bool mypredicate(int i,int j){ return (i == j); } int main(int argc, const char * argv[]) { int myints[] = {10,20,30,30,20,10,10,20}; vector
myvector(myints,myints + 8); vector
::iterator it; //using default comparison: it = search_n(myvector.begin(), myvector.end(), 2, 30); if (it != myvector.end()) cout<<"two 30s found at position "<<(it -myvector.begin())<