码迷,mamicode.com
首页 > 编程语言 > 详细

stl算法2

时间:2016-07-02 18:47:07      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:

修改性算法

一、copy

copy(myvector.begin(),myvector.end(),l1.begin());在复制前,l1必须是有容量的,否则系统会报错

copy_backward(myvector.begin(),myvector.end(),l1.end());在l1中是从后向前复制的

copy(myvector.begin(),myvector.end(),ostream_iterator<int>(cout,","));以逗号为分割符输出

二、transform()

同时实现复制和转换

transform(v1.begin(), v1.end(), back_inserter(l2), negate<int>());//将v1中的数乘以-1,复制到l2中,back_inserter是后向迭代器,复制时可以不用初始化容量
cout << "list2" << endl;
for_each(l2.begin(), l2.end(), print);
cout << endl;
cout << "l2中的元素乘以10" << endl;
transform(l2.begin(), l2.end(), l2.begin(), bind2nd(multiplies<int>(), 10));
for_each(l2.begin(), l2.end(), print);
cout << endl;
transform(l2.begin(), l2.end(), ostream_iterator<int>(cout, " "), bind2nd(divides<int>(), 2));//l2中的元素不会改变,只是输出
cout << endl;
transform(l2.begin(), l2.end(), l2.begin(), ostream_iterator<int>(cout, ","), multiplies<int>());//l2中的元素和l2中的元素分别相乘输出

 

三、交换

swap(v1, v2);//交换v1,v2

swap_ranges(v1.begin(), v1.begin() + 5, v2.begin());//交换一定范围的元素

四、填充元素

fill(v1.begin(), v1.begin() + 4, 9);//从v1[0]到v1[4]变成9

fill_n(v1.begin(), 5, 20);//v1[0]到v1[4]变成20

generate(v2.begin(), v2.end(), rand);//产生随机数

generate(v2.begin(),3,rand);//产生3个随机数

五、替换

replace(v1.begin(), v1.end(), 7, 99);//v1[6]变成99

replace_if(v1.begin(), v1.end(), bind2nd(less<int>(), 10), 11);//判断条件为真就替换

六、逆转

reverse(v1.begin(),v1.end());

reverse_copy(v1.begin(),v1.end(),ostream_iterator<int>(cout,",");//逆序输出

七、旋转

rotate(v1.begin(),v1.begin()+4,v1.end());

rotate_copy(v1.begin(),v1.begin()+3,v1.end(),ostream_iterator<int>(cout,",");

 

stl算法2

标签:

原文地址:http://www.cnblogs.com/ranranblog/p/5635785.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!