泛型函数

  泛型算法 可以理解为方便容器使用的一些接口。

  大部分算法都放在algorithm中,而泛型算法放在 numeric 头文件中。泛型算法主要包括只读算法、写容器算法和重新排序算法,与迭代器联系紧密。

  只读算法:

1 int num = accumulate(vec.begin(),vec.end(),3);//前两个为求和的范围,第三个为和的初始值
2 
3 //equal 用于确定两个算法是否保存相同的值
4 equal(vec1.begin(),vec1.end(),vec2.begin());//equal的一个基本假定:第二个序列至少比第一个长

  写容器算法:

 1 fill(iter1, iter2, x);//将iter1、iter2之间的数重置为x
 2 
 3 fill_n(iter, n, x);//从iter开始的n个数重置为x
 4 
 5 //back_insert 插入迭代器
 6 fill_n(back_insert(vec), n, x);//在vec后添加n个x
 7 
 8 copy(vec1.begin(), vec1.end(), vec2);//将vec1的内容拷贝到vec2,拷贝的目的序列大小不必输入序列小
 9 
10 replace(vec.begin(), vec.end(), m, n);//将范围内m替换为n
11 
12 replace_copy(vec.begin(), vec.end(), back_insert(vec1), m, n);//vec不变,vec2中插入一份替换后的拷贝值

  重排算法:

1 //先排好序后,将重复的放在最后边,然后删除
2 
3 sort(words.begin(), words.end()); 
4 
5 vector<string>::iterator end_unique =  unique(words.begin(), words.end()); 
6 
7 words.erase(end_unique, words.end());

  谓词:sort中自己定义的第三项比较函数,谓之谓词。

  lambda表达式:貌似很重要,没细看,用到再补充。

  

  迭代器:

    插入迭代器,back_inserter、front_inserter、inserter;

    流迭代器,istream_iterator、ostream_iterator;

    反向迭代器,forward_list、rbegin、rend、crbegin、crend,从尾元素向首元素反向移动, ++it/--it;

    移动迭代器,make_move_iterator。

原文地址:https://www.cnblogs.com/kbe317/p/4370404.html