【C++常用算法】STL基础语法学习 | 拷贝算法&替换算法

简介: 将容器内指定范围的元素拷贝到另一容器中

●copy


1.功能描述:


       将容器内指定范围的元素拷贝到另一容器中


2.查看copy定义下底层代码的函数原型:

ee8571c5ce0ee38f27c6946fa72b0889_1617fe85cd7041b58a17ce58140331b7.png

3.向deque容器中插入10~50五个数,将这五个数拷贝到另一个指定容器中并输出。

#include<iostream>
#include<deque>
#include<algorithm>
using namespace std;
void printdeque(int value)
{
  cout << value << " ";
}
void text()
{
  deque<int>d;
  d.push_back(10);
  d.push_back(20);
  d.push_back(30);
  d.push_back(40);
  d.push_back(50);
  for_each(d.begin(), d.end(), printdeque);
  cout << endl;
  deque<int>d1;
  d1.resize(d.size());
  copy(d.begin(),d.end(),d1.begin());
  for_each(d1.begin(),d1.end(),printdeque);
}
int main()
{
  text();
}

bc403fbd57b91216623202d5e6f0bb8f_fffc00ab65234375a3d59ba20ed58d55.png


●replace


1.功能描述:


       将容器内指定的旧元素改为新元素


2.查看replace定义下底层代码的函数原型:

25e6b52e5e1795e7ed85d9653dcb71d7_e1f289eb4dde446b956c873314e72736.png

3.向deque容器中插入1~10十个元素,使用replace算法去指定容器中已有的旧元素和将要替换旧元素的新元素并输出。

#include<iostream>
#include<deque>
#include<algorithm>
using namespace std;
void printdeque(int value)
{
  cout << value << " ";
}
void replace_func(deque<int>&d1)
{
  cout << "请输入要修改的旧值:";
  int n_old; cin >> n_old;
  cout << "请输入要修改的新值:";
  int n_new; cin >> n_new;
  replace(d1.begin(), d1.end(), n_old, n_new);
  cout << "替换后:";
  for_each(d1.begin(), d1.end(), printdeque);
}
void text()
{
  deque<int>d1;
  for (int i = 1; i <= 10; i++)
  {
  d1.push_back(i);
  }
  cout << "替换前:";
  for_each(d1.begin(),d1.end(),printdeque);
  cout << endl;
  replace_func(d1);
}
int main()
{
  text();
}

ba7a309f87cfbebc1243f8037916d560_e092f42e2318403ab9fd04bc600729e2.png


●replace_if


1.功能描述:


       将容器内满足条件的元素,替换成指定元素


2.查看replace_if定义下底层代码的函数原型:

6bcd68e7a2f63011ce45dd22a2c581b7_c7475ce5e33e47ee997acf959646585a.png

3.向deque容器中插入1~10十个元素,使用replace_if条件替换算法去指定一个大于6的条件谓词,输入指定将要替换旧元素的新元素并输出。

#include<iostream>
#include<deque>
#include<algorithm>
using namespace std;
void printdeque(int value)
{
  cout << value << " ";
}
class compare {
public:
  bool operator()(const int value)
  {
  return value > 6;
  }
};
void replace_if_func(deque<int>&d)
{
  cout << "请输入要修改的新值:";
  int n_new; cin >> n_new;
  replace_if(d.begin(),d.end(),compare(),n_new);
  cout << "替换后:";
  for_each(d.begin(), d.end(), printdeque);
}
void text()
{
  deque<int>d;
  for (int i = 1; i <= 10; i++)
  {
  d.push_back(i);
  }
  cout << "替换前:";
  for_each(d.begin(),d.end(),printdeque);
  cout << endl;
  replace_if_func(d);
}
int main()
{
  text();
}

3387724721c139f895dc1f12435c47d5_99176126df1b4e18a8d557e1dd23bd28.png


●swap


1.功能描述:


       互换两个容器的元素(同类型容器)


2.查看swap定义下底层代码的函数原型:

ef9be0ec0974fd1417dc16ee9a057a5c_e13e9f56ae894426a00153d1301bac39.png

3.分别向deque容器中插入1~10和11~20,使用swap交换算法交换两容器中前后的内容并且输出。


#include<iostream>
#include<deque>
#include<algorithm>
using namespace std;
void printdeque(int value)
{
  cout << value << " ";
}
void swap_func(deque<int>&d1, deque<int>&d2)
{
  cout << "交换前" << endl;
  swap(d1, d2);
  cout << "d1:"; for_each(d1.begin(), d1.end(), printdeque);
  cout << endl;
  cout << "d2:"; for_each(d2.begin(), d2.end(), printdeque);
  cout << endl;
}
void text()
{
  deque<int>d1;
  deque<int>d2;
  for (int i = 1, j = 1, k=11; i <= 10; i++, j++,k++)
  {
  d1.push_back(j);
  d2.push_back(k);
  }
  cout << "交换前"<<endl;
  cout << "d1:"; for_each(d1.begin(),d1.end(),printdeque);
  //1 2 3 4 5 6 7 8 9 10
  cout << endl;
  cout << "d2:"; for_each(d2.begin(),d2.end(),printdeque);
  //11 12 13 14 15 16 17 18 19 20
  cout << endl;
  swap_func(d1,d2);
}
int main()
{
  text();
}

88d2dacae3b7aa1e19e09698562f7561_bd139312fc26493492284d13f7c56e36.png

目录
相关文章
|
29天前
|
存储 程序员 C++
C++常用基础知识—STL库(2)
C++常用基础知识—STL库(2)
67 5
|
29天前
|
存储 自然语言处理 程序员
C++常用基础知识—STL库(1)
C++常用基础知识—STL库(1)
51 1
|
1月前
|
存储 算法 C++
高精度算法(加、减、乘、除,使用c++实现)
高精度算法(加、减、乘、除,使用c++实现)
386 0
高精度算法(加、减、乘、除,使用c++实现)
|
1月前
|
算法 安全 Linux
【C++STL简介】——我与C++的不解之缘(八)
【C++STL简介】——我与C++的不解之缘(八)
|
1月前
|
算法 数据处理 C++
c++ STL划分算法;partition()、partition_copy()、stable_partition()、partition_point()详解
这些算法是C++ STL中处理和组织数据的强大工具,能够高效地实现复杂的数据处理逻辑。理解它们的差异和应用场景,将有助于编写更加高效和清晰的C++代码。
22 0
|
1月前
|
存储 算法 决策智能
【算法】博弈论(C/C++)
【算法】博弈论(C/C++)
|
1月前
|
存储 算法 C++
【算法】哈希映射(C/C++)
【算法】哈希映射(C/C++)
|
1月前
|
机器学习/深度学习 人工智能 算法
【算法】最长公共子序列(C/C++)
【算法】最长公共子序列(C/C++)
|
1月前
|
人工智能 算法 BI
一篇带你速通差分算法(C/C++)
一篇带你速通差分算法(C/C++)
|
4天前
|
存储 编译器 C++
【c++】类和对象(中)(构造函数、析构函数、拷贝构造、赋值重载)
本文深入探讨了C++类的默认成员函数,包括构造函数、析构函数、拷贝构造函数和赋值重载。构造函数用于对象的初始化,析构函数用于对象销毁时的资源清理,拷贝构造函数用于对象的拷贝,赋值重载用于已存在对象的赋值。文章详细介绍了每个函数的特点、使用方法及注意事项,并提供了代码示例。这些默认成员函数确保了资源的正确管理和对象状态的维护。
22 4