3. equal比较两个序列,此算法接受3个参数,前两个表示第一个序列的元素范围,第三个表示第二个序列的首元素equal(begin(p), end(p), r)
10.2.2 写容器元素的算法 fill(vec.begin(), vec.end(), 2);// 算法fill接受一对迭代器表示范围,还接受一个值作为第三个参数。fill将给定的这个值赋予输入序列的每个元素 fill_n(vec.begin(), vec.size(), 2);//功能类似于fill,第二个参数必须小于等于size()
Back_inserter接受一个指向容器的引用,返回一个与该容器绑定的插入迭代器。当我们通过此迭代器赋值时,赋值运算符会调用push_back讲一个具有给定值的元素添加到容器中。
vector<int> vec; //空向量 auto it = back_inserter(vec); *it = 42; //vec现在有一个元素,值为42 结合fill_n给容器赋值fill_n(back_inserter(vec), 10, 2);添加10个2到vec拷贝算法(copy) copy算法是列一个像目的位置迭代器指向的输出序列中的元素写入数据的算法。此算法接受三个迭代器,前两个表示一个输入范围,第三个表示目的序列的起始位置。此算法将输入范围中的元素拷贝到目的序列中,传递给copy的目的序列至少要包含于输入序列一样多的元素。 内置数组的拷贝 int a1[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; int a2[sizeof(a1) / sizeof(*a1)]; auto ret = copy(begin(a1), end(a1), a2);replace算法读入一个序列,并将其中所有等于给定值的元素都改为另一个值。此算法发接受四个参数:前两个是迭代器,表示输入序列,后两个一个是要搜索的的值,另一个是新值。它将所有等于第一个值的元素替换为第二值 replace(ilst.begin(), ilst.end(), 34, 42); //将所有值为34的元素替换为42sort排序,接受一对范围迭代器。 unique重排vector,是的不重复出现的元素出现在vector的开始部分 sort(words.begin(), words.end()); auto end_unique = unique(words.begin(), words.end()); words.erase(end_unique, words.end()); 3 < x < 5 必须写成 x > 3 && x < 5 X >= 5的写法是正确的Stable_sort 算法参数和功能与sort类似,只是这种算法非常稳定,可以维持相等元素的原有顺序 partiton算法,接受一个谓词,对容器内容进行划分,是的谓词为true的值会排在容器的前半部分,而使的谓词为 false的会排在后半部分。算法返回一个迭代器,指向最后一个使谓词为true的元素之后的位置。 Stable_partition与sort_sort类似,非常稳定,可以在划分后的序列中维持原有元素的顺序