【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

目录
相关文章
|
1月前
|
存储 算法 安全
2024重生之回溯数据结构与算法系列学习之串(12)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丟脸好嘛?】
数据结构与算法系列学习之串的定义和基本操作、串的储存结构、基本操作的实现、朴素模式匹配算法、KMP算法等代码举例及图解说明;【含常见的报错问题及其对应的解决方法】你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
2024重生之回溯数据结构与算法系列学习之串(12)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丟脸好嘛?】
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
【EMNLP2024】基于多轮课程学习的大语言模型蒸馏算法 TAPIR
阿里云人工智能平台 PAI 与复旦大学王鹏教授团队合作,在自然语言处理顶级会议 EMNLP 2024 上发表论文《Distilling Instruction-following Abilities of Large Language Models with Task-aware Curriculum Planning》。
|
1月前
|
算法 安全 搜索推荐
2024重生之回溯数据结构与算法系列学习(8)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第2.3章之IKUN和I原达人之数据结构与算法系列学习x单双链表精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
1月前
|
存储 算法 安全
2024重生之回溯数据结构与算法系列学习之顺序表【无论是王道考研人还真爱粉都能包会的;不然别给我家鸽鸽丢脸好嘛?】
顺序表的定义和基本操作之插入;删除;按值查找;按位查找等具体详解步骤以及举例说明
|
1月前
|
算法 安全 搜索推荐
2024重生之回溯数据结构与算法系列学习之单双链表精题详解(9)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第2.3章之IKUN和I原达人之数据结构与算法系列学习x单双链表精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
1月前
|
存储 Web App开发 算法
2024重生之回溯数据结构与算法系列学习之单双链表【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构之单双链表按位、值查找;[前后]插入;删除指定节点;求表长、静态链表等代码及具体思路详解步骤;举例说明、注意点及常见报错问题所对应的解决方法
|
1月前
|
算法 安全 NoSQL
2024重生之回溯数据结构与算法系列学习之栈和队列精题汇总(10)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第3章之IKUN和I原达人之数据结构与算法系列学习栈与队列精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
1月前
|
算法 安全 NoSQL
2024重生之回溯数据结构与算法系列学习之顺序表习题精讲【无论是王道考研人还真爱粉都能包会的;不然别给我家鸽鸽丢脸好嘛?】
顺序表的定义和基本操作之插入;删除;按值查找;按位查找习题精讲等具体详解步骤以及举例说明
|
1月前
|
存储 算法 安全
2024重生之回溯数据结构与算法系列学习【无论是王道考研人还真爱粉都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构的基本概念;算法的基本概念、特性以及时间复杂度、空间复杂度等举例说明;【含常见的报错问题及其对应的解决方法】
|
1月前
|
算法 安全 搜索推荐
2024重生之回溯数据结构与算法系列学习之王道第2.3章节之线性表精题汇总二(5)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
IKU达人之数据结构与算法系列学习×单双链表精题详解、数据结构、C++、排序算法、java 、动态规划 你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!