常用拷贝和替换算法 copy() replace() replace_if() swap()

简介: 常用拷贝和替换算法 copy() replace() replace_if() swap()

导航


1.copy() //用于拷贝一个容器到另一个容器

2.replace() //将容器中的数进行替换

3.replace_if() //将容器中符合条件的数进行替换

4.swap() //将两个容器中数据进行互换


——————————————————————————————————————


1.copy()函数用法


copy(iterator beg,iterator end,iterator tar)

iterator beg:迭代器初始位置

iterator end:迭代器末尾位置

iterator tar:目标迭代器初始位置


注意:使用copy()之前要分配空间,resize()


#include <iostream>
using namespace std;
#include <vector>
#include <algorithm>
void print(int val)
{
  cout<<val<<" ";
}
void test()
{
  //创建容器 
  vector<int> v1;
  for(int i=0;i<5;i++)
  v1.push_back(i);
  vector<int> v2;
  //拷贝之前要分配空间
  v2.resize(v1.size()); 
  //进行拷贝 
  copy(v1.begin(),v1.end(),v2.begin());
  for_each(v2.begin(),v2.end(),print); 
}
int main()
{
  test();
  return 0;
}



——————————————————————————————————————


2.replace() 函数使用


原型:replace(iterator beg,iterator end,oldval,newval)

iterator beg:迭代器初始位置

iterator end:迭代器末尾位置

oldval:容器中旧的数值

newval:将旧的数值改为新的数值


#include <iostream>
using namespace std;
#include <vector>
#include <algorithm>
void print(int val)
{
  cout<<val<<" ";
}
void test()
{
  //创建容器 
  vector<int> v1;
  //插入数据 
  v1.push_back(10);
  v1.push_back(20);
  v1.push_back(10);
  v1.push_back(10);
  cout<<"替换前:"<<endl;
  for_each(v1.begin(),v1.end(),print); 
  cout<<endl;
  //将容器中10替换为100 
  replace(v1.begin(),v1.end(),10,100);
  cout<<"替换后:"<<endl;
  for_each(v1.begin(),v1.end(),print); 
}
int main()
{
  test();
  return 0;
}



运行结果:



——————————————————————————————————————


3.replace_if() 函数用法


原型:replace_if(iterator beg,iterator end,_pred,newvalue)

iterator beg:迭代器初始位置

iterator end:迭代器末尾位置

_pred:谓词,提供筛选要求

newvalue:替换后的新值


#include <iostream>
using namespace std;
#include <vector>
#include <algorithm>
class print
{
public:
  void operator()(int val)  //写一个仿函数 
  {
  cout<<val<<" ";
  }
};
//写一个谓词,添加到replace_if中 
class Greater20
{
public:
  bool operator()(int val)
  {
  return val>20;      //判断是否大于20 
  }
};
void test()
{
  vector<int> v;
  v.push_back(10);
  v.push_back(20);
  v.push_back(50);
  v.push_back(15);
  v.push_back(60);
  v.push_back(40);
  cout<<"替换前:"<<endl;
  for_each(v.begin(),v.end(),print());
  cout<<endl;
  replace_if(v.begin(),v.end(),Greater20(),100);
  cout<<"替换后:"<<endl;
  for_each(v.begin(),v.end(),print());
}
int main()
{
  test();
  return 0;
}



作用:灵活的筛选数进行替换


——————————————————————————————————————


4.swap() 函数使用


原型:swap(v1,v2)

v1:容器1

v2:容器2


#include <iostream>
using namespace std;
#include <vector>
#include <algorithm>
class print
{
public:
  void operator()(int val)  //写一个仿函数 
  {
  cout<<val<<" ";
  }
};
void test()
{
  vector<int> v;
  vector<int> v1;
  for(int i=0;i<10;i++){
  v.push_back(i);
  v1.push_back(i+5);
  }
  cout<<"替换前:"<<endl;
  for_each(v.begin(),v.end(),print());
  cout<<endl;
  for_each(v1.begin(),v1.end(),print());
  cout<<endl;
  swap(v,v1);    //将两个容器数据进行互换
  cout<<"替换后:"<<endl;
  for_each(v.begin(),v.end(),print());
  cout<<endl;
  for_each(v1.begin(),v1.end(),print());
  cout<<endl;
}
int main()
{
  test();
  return 0;
}
相关文章
|
6月前
|
机器学习/深度学习 算法 搜索推荐
|
7月前
|
算法 搜索推荐 C++
C++之STL常用算法(遍历、查找、排序、拷贝、替换、算数生成、集合)
C++之STL常用算法(遍历、查找、排序、拷贝、替换、算数生成、集合)
|
8月前
|
算法 C++ 容器
黑马c++ STL常用算法 笔记(4) 常用拷贝和替换算法
黑马c++ STL常用算法 笔记(4) 常用拷贝和替换算法
|
算法 C++
90 C++ - 常用拷贝和替换算法
90 C++ - 常用拷贝和替换算法
41 0
|
8月前
|
存储 算法 搜索推荐
带用接和替换算法swap讲解
带用接和替换算法swap讲解
101 1
|
8月前
|
存储 算法 数据处理
常用拷贝和替换算法-copy讲解
常用拷贝和替换算法-copy讲解
89 1
|
算法 C++ 开发者
8.1 C++ STL 变易拷贝算法
C++ STL中的变易算法(Modifying Algorithms)是指那些能够修改容器内容的算法,主要用于修改容器中的数据,例如插入、删除、替换等操作。这些算法同样定义在头文件 `<algorithm>` 中,它们允许在容器之间进行元素的复制、拷贝、移动等操作,从而可以方便地对容器进行修改和重组。
|
算法 C++ 容器
STL算法篇之拷贝修改类算法
STL算法篇之拷贝修改类算法
|
算法 搜索推荐 C++
第九章(14):STL之常用拷贝和替换算法
第九章(14):STL之常用拷贝和替换算法
第九章(14):STL之常用拷贝和替换算法
|
算法 Java
[算法] swap函数交换两个数值未改变问题解决
[算法] swap函数交换两个数值未改变问题解决

热门文章

最新文章