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

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;
}


posted @ 2015-03-05 18:14  SandKing  阅读(12)  评论(0)    收藏  举报  来源