STL算法 ------- 复制元素(Copying)

来源:互联网 发布:涂鸦跳跃源码 编辑:程序博客网 时间:2024/05/16 15:16

1.copy()

2.copy_backward()

3.注意:

       (1)  没有copy_if()算法,可以使用remove_copy_if() 算法

       (2)  复制过程中要逆转元素次序,使用 reverse_copy() 算法

       (3)  把容器内所有元素赋值给另一个容器,要用赋值操作符或容器的assign()成员

       (4)  复制过程中删除某些元素, 使用remove_copy() 和 remove_copy_if() 算法

       (5)  复制中改变元素,使用transform() 或 replace_copy() 算法

#include <iostream>#include <vector>#include <list>#include <algorithm>using namespace std;int main( int argc, char** argv ){list<int> lst;for( int i=0; i<10; ++i ){lst.push_back(i);}for(list<int>::const_iterator itr=lst.begin(); itr!=lst.end(); ++itr){cout<<*itr<<' ';}cout<<endl;vector<int> vec(lst.size()*2);for(vector<int>::const_iterator itr=vec.begin(); vec.end()!=itr; ++itr){cout<<*itr<<' ';}cout<<endl;copy(lst.begin(), lst.end(), vec.begin() );for(vector<int>::const_iterator itr=vec.begin(); vec.end()!=itr; ++itr){cout<<*itr<<' ';}cout<<endl;copy_backward(lst.begin(), lst.end(), vec.end());for(vector<int>::const_iterator itr=vec.begin(); vec.end()!=itr; ++itr){cout<<*itr<<' ';}cout<<endl;return 0;}

#include <iostream>#include <vector>#include <list>#include <iterator>#include <algorithm>using namespace std;int main( int argc, char** argv ){list<int> lst;for( int i=1; i<10; ++i ){lst.push_back(i);}for(list<int>::const_iterator itr=lst.begin(); itr!=lst.end(); ++itr){cout<<*itr<<' ';}cout<<endl;//必须声明容器的大小//vector<int> vec(9);//copy(lst.begin(), lst.end(), vec.begin() );vector<int> vec;copy(lst.begin(), lst.end(), back_inserter(vec) );for(vector<int>::const_iterator itr=vec.begin(); vec.end()!=itr; ++itr){cout<<*itr<<' ';}cout<<endl;copy(lst.begin(), lst.end(), ostream_iterator<int>(cout, " "));cout<<endl;copy(lst.rbegin(), lst.rend(), vec.begin() );for(vector<int>::const_iterator itr=vec.begin(); vec.end()!=itr; ++itr){cout<<*itr<<' ';}cout<<endl;return 0;}

#include <iostream>#include <algorithm>#include <vector>using namespace std;int main( int argc, char** argv ){vector<char> source(10, '.');for(int c='a'; c<='f'; ++c ){source.push_back(c);}source.insert(source.end(), 10, '.');for(vector<char>::const_iterator itr=source.begin(); source.end()!=itr; ++itr){cout<<*itr<<' ';}cout<<endl;vector<char> c1(source.begin(), source.end());copy(c1.begin()+10, c1.begin()+16, c1.begin()+7);for(vector<char>::const_iterator itr=c1.begin(); c1.end()!=itr; ++itr){cout<<*itr<<' ';}cout<<endl;vector<char> c2(source.begin(), source.end());copy_backward(c2.begin()+10, c2.begin()+16, c2.begin()+19);for(vector<char>::const_iterator itr=c2.begin(); c2.end()!=itr; ++itr){cout<<*itr<<' ';}cout<<endl;return 0;}


0 0