标签:c++11 泛型 迭代器 sizeof iterator
#include<iostream> #include<numeric> using namespace std; //对vec中的元素求和,初值是0 int sum=accumulate(vec.cbegin(), vec.cend(), 0);
string sum=accumulate(v.cbegin(), v.cend(), string(""));
string sum=accumulate(v.cbegin(), v.cend(), "");
//错误:const char*上没有定义“+”运算符 string sum=accumulate(v.cbegin(), v.cend(), "");
//roster2中的元素数目应该至少与roster1一样多 equal(roster1.cbegin(), roster.cend(), roster2.begin());
fill(vec.begin(), vec.end(), 0); //将每一个元素重置为0 //将容器的一个子序列设置为10 fill(vec.begin(), vec.begin()+vec.size()/2, 10);
vector<int> vec; //空vector //使用vec,赋予它不同值 fill_n(vec.begin(), vec.size(), 0); //将所有元素重置为0
//函数fill_n假定写入指定个元素是安全的。 fill_n(dest, n, val)
vector<int> vec; //空向量 //灾难:修改vec中的10个(不存在)元素 fill_n(vec.begin(), 10, 0);
vector<int> vec; //空向量 auto it=back_inserter(vec); //通过它赋值会将元素插入到vec中!! *it=42; //ok现在vec中有一个叫42的值了!!! //我们常用back_inserter来创建一个迭代器,作为算法的目的位置来使用 vector<int> vec; //空向量 //正确:back_inserter创建一个插入迭代器,可用来向vec添加元素 fill_n(back_inserter(vec), 10, 0); //这里由于每次调用都会用到back_inserter返回的是push_back //最终这个语句向vec的末尾添加了10个为0的元素
int a1[]={0,1,2,3,4,5,6,7,8,9}; int a2[sizeof(a1)/sizeof(*a1)]; //a2与a1大小一样 //ret指向拷贝到a2的尾元素之后的位置 auto ret=copy(begin(a1), end(a1), a2); //吧a1的内容拷贝给a2
//将所有的0换成42 replace(ilst.begin(), ilst.end(), 0, 42); //如果希望还是保留原来的序列,来一个新序列保存修改后的数据 //那么这里还有一个好玩意 replace_copy(ilst.cbegin(), ilst.cend(), back_inserter(ivec), 0, 42); //调用后ilst没有改变,ivec包含ilst的一份拷贝,不过原来在ilst中值为0的元素ivec //中都变成42
//好的 ,看个使用sort的案例 void elimDups(vector<string> &words) { //这命名,特么不是欺负我不懂英语么 //安字典排序words,以便查找重复单词 sort(words.begin(), words.end()); //unique重排输入范围,使得每个单词只出现一次 //排列在范围的前部,返回指向不重复区域之后一个位置的迭代器 auto end_unique=unique(words.begin(), words.end()); //使用向量操作erase删除重复单词 words.erase(end_unique, words.end()); }
【足迹C++primer】31、初识泛型算法,布布扣,bubuko.com
标签:c++11 泛型 迭代器 sizeof iterator
原文地址:http://blog.csdn.net/cutter_point/article/details/31719409