cb40a_c++_STL_算法_交换swap_ranges

cb40a_c++_STL_算法_交换swap_ranges
swap_ranges(b,e,b2);
如果两个容器的数据数量不一致时,只交换一部分数据,
a里面3个,b里面5个,则只会交换3个,b里面还有两个不变

注意:下列两种方法也是交换算法
1.容器的swap()成员函数
2.赋值操作

/*cb40a_c++_STL_算法_交换swap_ranges
swap_ranges(b,e,b2);
如果两个容器的数据数量不一致时,只交换一部分数据,
a里面3个,b里面5个,则只会交换3个,b里面还有两个不变

注意:下列两种方法也是交换算法
1.容器的swap()成员函数
2.赋值操作

*/

#include <iostream>
#include <algorithm>
#include <vector>
#include <deque>

using namespace std;

int main()
{
	vector<int> ivec;
	deque<int> ideq;

	for (int i = 1; i <= 9; ++i)
		ivec.push_back(i);
	for (int i = 11; i <= 23; ++i)
		ideq.push_back(i);
	cout << "vector数据" << endl;
	for (vector<int> ::iterator iter = ivec.begin(); iter != ivec.end(); ++iter)
		cout << *iter << ' ';
	cout << endl;
	cout << "deque的数据" << endl;
	for (deque<int>::iterator iter = ideq.begin(); iter != ideq.end(); ++iter)
		cout << *iter << ' ';
	cout << endl;
	cout << "vector与deque的数据交换" << endl;

	swap_ranges(ivec.begin(), ivec.end(), ideq.begin());



	//再次显示:
	cout << "vector数据" << endl;
	for (vector<int> ::iterator iter = ivec.begin(); iter != ivec.end(); ++iter)
		cout << *iter << ' ';
	cout << endl;
	cout << "deque的数据" << endl;
	for (deque<int>::iterator iter = ideq.begin(); iter != ideq.end(); ++iter)
		cout << *iter << ' ';
	cout << endl;


	deque<int>::iterator pos;
	pos = swap_ranges(ivec.begin(), ivec.end(), ideq.begin());
	if (pos != ideq.end())
	{
		cout << "还存在没有交换完的数据: 位置是:" << *pos << endl;
	}

	//再次显示:
	cout << "vector数据" << endl;
	for (vector<int> ::iterator iter = ivec.begin(); iter != ivec.end(); ++iter)
		cout << *iter << ' ';
	cout << endl;
	cout << "deque的数据" << endl;
	for (deque<int>::iterator iter = ideq.begin(); iter != ideq.end(); ++iter)
		cout << *iter << ' ';
	cout << endl;

	cout << "ideq里面:前面的三个数据和后面的三个数据相互交换" << endl;
	swap_ranges(ideq.begin(), ideq.begin()+ 3, ideq.rbegin());
	for (deque<int>::iterator iter = ideq.begin(); iter != ideq.end(); ++iter)
		cout << *iter << ' ';
	cout << endl;

	vector<int>ivec1;
	vector<int>ivec2;
	ivec1.push_back(1);
	ivec1.push_back(2);
	ivec1.push_back(3);

	ivec2.push_back(10);
	ivec2.push_back(20);
	ivec2.push_back(30);

	cout << "交换前vector1的数据:" << endl;
	for (vector<int> ::iterator iter = ivec1.begin(); iter != ivec1.end(); ++iter)
		cout << *iter << ' ';
	cout << endl;
	cout << "交换前vector2的数据:" << endl;

	for (vector<int> ::iterator iter = ivec2.begin(); iter != ivec2.end(); ++iter)
		cout << *iter << ' ';
	cout << endl;

	ivec1.swap(ivec2);
	cout << "ivec1.swap(ivec2);实际交换的是指针---,速度快。" << endl;

	cout << "交换后vector1的数据:" << endl;
	for (vector<int> ::iterator iter = ivec1.begin(); iter != ivec1.end(); ++iter)
		cout << *iter << ' ';
	cout << endl;
	cout << "交换后vector2的数据:" << endl;

	for (vector<int> ::iterator iter = ivec2.begin(); iter != ivec2.end(); ++iter)
		cout << *iter << ' ';
	cout << endl;



	return 0;
}
发布了469 篇原创文章 · 获赞 211 · 访问量 95万+

猜你喜欢

转载自blog.csdn.net/txwtech/article/details/104463317