stl算法2
Posted ranran1203
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了stl算法2相关的知识,希望对你有一定的参考价值。
修改性算法
一、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的主要内容,如果未能解决你的问题,请参考以下文章