C++算法库 不修改内容的序列操作函数(二)

2014-11-24 08:46:05 · 作者: · 浏览: 4
) { int mychars[] = {'M','b','c','B','N','C'}; vector haystack(mychars,mychars + 6); vector ::iterator it; int needle[] = {'B','9','C'}; //using default comparison: it = find_first_of(haystack.begin(), haystack.end(), needle, needle + 3); if (it != haystack.end()) cout<<"The first match is: " << *it<


/*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())<