常用的拷贝和替换算法

copy():复制

vector<int> vecIntA;

                 vecIntA.push_back(1);

                 vecIntA.push_back(3);

                 vecIntA.push_back(5);

                 vecIntA.push_back(7);

                 vecIntA.push_back(9);

 

                 vector<int> vecIntB;

                 vecIntB.resize(5);                     //扩大空间

 

                 copy(vecIntA.begin(), vecIntA.end(), vecIntB.begin());   //vecIntB: {1,3,5,7,9}

replace()

  • replace(beg,end,oldValue,newValue):    将指定范围内的所有等于oldValue的元素替换成newValue。

                 vector<int> vecIntA;

                 vecIntA.push_back(1);

                 vecIntA.push_back(3);

                 vecIntA.push_back(5);

                 vecIntA.push_back(3);

                 vecIntA.push_back(9);

 

                replace(vecIntA.begin(), vecIntA.end(), 3, 8);         //{1,8,5,8,9}

replace_if()

  • replace_if : 将指定范围内所有操作结果为true的元素用新值替换。

用法举例:

replace_if(vecIntA.begin(),vecIntA.end(),GreaterThree,newVal)

其中 vecIntA是用vector<int>声明的容器

GreaterThree 函数的原型是 bool GreaterThree(int iNum)

 

//把大于等于3的元素替换成8

                 vector<int> vecIntA;

                 vecIntA.push_back(1);

                 vecIntA.push_back(3);

                 vecIntA.push_back(5);

                 vecIntA.push_back(3);

                 vecIntA.push_back(9);

 

                 replace_if(vecIntA.begin(), vecIntA.end(), GreaterThree, 8);          // GreaterThree的定义在上面。

swap()

  • swap:   交换两个容器的元素

                 vector<int> vecIntA;

                 vecIntA.push_back(1);

                 vecIntA.push_back(3);

                 vecIntA.push_back(5);

                

                 vector<int> vecIntB;

                 vecIntB.push_back(2);

                 vecIntB.push_back(4);

 

                 swap(vecIntA, vecIntB);  //交换

 

 

#include <iostream>
using namespace std;
#include "string"
#include <vector>
#include <list>
#include "set"
#include <algorithm>
#include "functional"
#include "iterator"  //输出流迭代器的头文件

void printV(vector<int> &v)
{
	for (vector<int>::iterator it = v.begin(); it != v.end(); it++)
	{
		cout<<"it: "<<*it<<endl;
	}
}

//复制函数
void copy()
{
	vector<int> v1;
	v1.push_back(1);
	v1.push_back(3);
	v1.push_back(5);
	v1.push_back(7);

	vector<int> v2;
	v2.resize(v1.size());

	copy(v1.begin(),v1.end(),v2.begin());
	printV(v2);
}

//一元谓词
bool great_equal_5(int &n)
{
	if (n >= 5)
	{
		return true;
	}
	return false;
}

//替换
void replace()
{
	vector<int> v1;
	v1.push_back(1);
	v1.push_back(3);
	v1.push_back(5);
	v1.push_back(7);
	v1.push_back(3);
	replace(v1.begin(),v1.end(),3,8);  //把vector中等于3的元素替换成8
	replace_if(v1.begin(),v1.end(),great_equal_5,1); //把vector中大于等于5的元素替换成1

	printV(v1);
}


//交换
void swap()
{
	vector<int> v1;
	v1.push_back(1);
	v1.push_back(3);
	v1.push_back(5);

	vector<int> v2;
	v2.push_back(2);
	v2.push_back(4);
	v2.push_back(6);

	swap(v1,v2);
	printV(v1);
}


void main()
{
	copy();
	replace();
	swap();
}

发布了293 篇原创文章 · 获赞 113 · 访问量 25万+

猜你喜欢

转载自blog.csdn.net/tianguiyuyu/article/details/105627587