C++ //常用拷贝和替换算法 //copy //replace 将指定区间范围内的旧元素修改为新元素 //replace_if(满足条件的元素,替换指定的元素) //swap 互换两个容器的元素
//常用拷贝和替换算法
//copy
//replace 将指定区间范围内的旧元素修改为新元素
//replace_if(满足条件的元素,替换指定的元素)
//swap 互换两个容器的元素
#include<iostream>
#include<vector>
#include<algorithm> using namespace std; void test01()
{
vector<int>v;
for (int i = 0; i < 10; i++)
{
v.push_back(i);
} for (vector<int>::iterator it = v.begin(); it != v.end(); it++)
{
cout << *it << " ";
}
cout << endl;
vector<int>v2;
v2.resize(v.size());
copy(v.begin(), v.end(), v2.begin());
for (vector<int>::iterator it = v2.begin(); it != v2.end(); it++)
{
cout << *it << " ";
}
cout << endl; v2 = v;
for (vector<int>::iterator it = v2.begin(); it != v2.end(); it++)
{
cout << *it << " ";
}
cout << endl; } //repalce
class MyPrint
{
public:
void operator()(int val)
{
cout<< val << " ";
}
}; void Myprint(int v)
{
cout<< v<<" ";
}
void test02()
{
vector<int>v2;
v2.push_back(20);
v2.push_back(50);
v2.push_back(30);
v2.push_back(60);
v2.push_back(20);
v2.push_back(20);
v2.push_back(90);
v2.push_back(20);
v2.push_back(20); cout << "替换前:" << endl;
for_each(v2.begin(), v2.end(),Myprint);
cout << endl; for_each(v2.begin(), v2.end(), MyPrint());
cout << endl; //将20替换999(所有的20都替换)
replace(v2.begin(), v2.end(), 20, 999);
cout << "替换后" << endl;
for_each(v2.begin(), v2.end(), MyPrint());
cout << endl; } //replace_if
void Mythirty(int t)
{
cout << t << " ";
} class Great30
{
public:
int operator()(int val)
{
return val >= 30;
}
}; int chongzai(int a)
{
return a >= 30;
} void test03()
{
vector<int>v3;
v3.push_back(50);
v3.push_back(600);
v3.push_back(55);
v3.push_back(89);
v3.push_back(20);
v3.push_back(30);
v3.push_back(70);
v3.push_back(0);
v3.push_back(36);
v3.push_back(60);
cout << "没换前:" << endl;
for_each(v3.begin(), v3.end(), Mythirty);
cout << endl;
//将大于 30 的元素换成 789
cout << "换了后:" << endl;
replace_if(v3.begin(), v3.end(), Great30(), 789); for_each(v3.begin(), v3.end(), Mythirty);
cout << endl; cout << "换了后:" << endl;
replace_if(v3.begin(), v3.end(), chongzai, 789); for_each(v3.begin(), v3.end(), Mythirty);
cout << endl; } //swap
void test04()
{
vector<int>v4;
vector<int>v5; v4.push_back(10);
v4.push_back(20);
v4.push_back(30);
v4.push_back(40);
v4.push_back(50); v5.push_back(100);
v5.push_back(200);
v5.push_back(300);
v5.push_back(400);
v5.push_back(500); cout << "交换前:" << endl;
cout << "V4 = " << endl;
for (vector<int>::iterator it = v4.begin(); it != v4.end(); it++)
{ cout << *it << " ";
}
cout << endl; cout << "V5 = " << endl;
for (vector<int>::iterator it = v5.begin(); it != v5.end(); it++)
{ cout << *it << " ";
}
cout << endl; swap(v5,v4); cout << "交换后:" << endl;
cout << "V4 = " << endl;
for (vector<int>::iterator it = v4.begin(); it != v4.end(); it++)
{
cout<< *it << " ";
}
cout << endl; cout << "V5 = " << endl;
for (vector<int>::iterator it = v5.begin(); it != v5.end(); it++)
{
cout << *it << " ";
}
cout << endl; }
int main()
{
test01();
test02();
test03(); test04();
system("pause");
return 0;
}

C++ //常用拷贝和替换算法 //copy //replace 将指定区间范围内的旧元素修改为新元素 //replace_if(满足条件的元素,替换指定的元素) //swap 互换两个容器的元素的更多相关文章
- C++ STL 常用拷贝和替换算法
C++ STL 常用拷贝和替换算法 copy() 复制 vector<int> vecIntA; vecIntA.push_back(1); vecIntA.push_back(3); v ...
- STL_算法_03_拷贝和替换算法
◆ 常用的拷贝和替换算法: 1.1.复制(容器A(全部/部分) 复制到 容器B(全部/部分)),返回的值==>iteratorOutBegin.end() iterator copy(itera ...
- Lodash.js常用拷贝
lodash.js 降低 array.number.objects.string 等等的使用难度从而让 JavaScript 变得更简单.非常适用于:遍历 array.object 和 string: ...
- C++ - 使用copy函数打印容器(container)元素
使用copy函数打印容器(container)元素 本文地址: http://blog.csdn.net/caroline_wendy C++能够使用copy函数输出容器(container)中的元素 ...
- php如何互换一个数组的首尾元素 中间不变 首尾互换
群里有人提出一个问题 如何互换一个数组的首尾元素 中间不变 首尾互换 代码如下: <?php $array=array(1,2,3,4,5,6,7,8,9,10); $first=array_s ...
- 自己写一个swap函数交换任意两个相同类型元素的值 对空指针的使用 字节大小的判断(二)了解原理
验证的代码: #include <stdio.h> int main(){ char c = 'z'; ) + (c << ) + () + 'a'; printf(" ...
- html标签分两种:块状元素和内联元素
块状元素一般是其它元素的容器,可以容纳内联元素和其它块状元素,独占一行,宽度和高度起作用.如div,p等标签属于块状元素. 内联元素只能容纳文本和其它内联元素,可与其它内联元素位于同一行, ...
- STL容器删除元素的陷阱
今天看Scott Meyers大师的stl的用法,看到了我前段时间犯的一个错误,发现我写的代码和他提到错误代码几乎一模一样,有关stl容器删除元素的问题,错误的代码如下:std::vector< ...
- JS利用正则配合replace替换指定字符
替换指定字符的方法有很多,在本文为大家详细介绍下,JS利用正则配合replace是如何做到的,喜欢的朋友可以参考下 定义和用法 replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一 ...
- replace() MySQL批量替换指定字段字符串
mysql replace实例说明: UPDATE tb1 SET f1=REPLACE(f1, 'abc', 'def'); REPLACE(str,from_str,to_str) 在字符串 st ...
随机推荐
- 手撕Vue-监听数据变化
经过上一篇的介绍,已经实现了将模板编译成具体数据,接下来要介绍的是如何监听数据的变化,本章主要完成这个需求即可. 在我们文章的开始,我写了一个 Vue 双向数据绑定原理的文章当中封装了一个 Obser ...
- MySQL 常见面试题/知识点总结!(2021 最新版)| JavaGuide
相关阅读: 2.7w字!Java基础面试题/知识点总结!(2021 最新版) 这篇文章之前发过,不过,我最近对其进行了重构完善并且修复了很多小问题.所以,在公号再同步一下! 内容很硬!强烈建议小伙伴们 ...
- Prompt learning 教学[最终篇]:Chatgpt使用场景推荐、优秀学习资料推荐、AI工具推荐
Prompt learning 教学[最终篇]:Chatgpt使用场景推荐.优秀学习资料推荐.AI工具推荐 1.chatgpt使用场景推荐 各位应该在各种平台看到不少可以尝试使用的场景,我这里仅收录: ...
- 6.4 Windows驱动开发:内核枚举DpcTimer定时器
在操作系统内核中,DPC(Deferred Procedure Call)是一种延迟执行的过程调用机制,用于在中断服务例程(ISR)的上下文之外执行一些工作.DPC定时器是基于DPC机制的一种定时执行 ...
- C/C++ 获取主机网卡MAC地址
MAC地址(Media Access Control address),又称为物理地址或硬件地址,是网络适配器(网卡)在制造时被分配的全球唯一的48位地址.这个地址是数据链路层(OSI模型的第二层)的 ...
- 编译Nginx服务部署静态网站
Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件 (IMAP/POP3) 代理服务器,并在一个BSD-like协议下发行.其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在 ...
- Django之FBV和CBV模式
FBV就是 url路由>>>业务处理函数的方式,CBV就是url路由>>>类 的处理业务方式. 最常用的就是FBV模式,就不用过多赘述,直接上CBV的实用代码. 1 ...
- Python实现栈、队列、双端队列
栈的实现 class Stack(): def __init__(self): self.items = [] def push(self, item): self.items.append(item ...
- 面试官:你能简单聊聊MyBatis执行流程
本文分享自华为云社区<面试必问|聊聊MyBatis执行流程?>,作者: 冰 河. MyBatis源码解析 大家应该都知道Mybatis源码也是对Jbdc的再一次封装,不管怎么进行包装,还是 ...
- 蓝鲸单机离线部署:app_mgr组件安装失败解决
之前在腾讯蓝鲸智云-单机离线部署测试中,遇到了几个安装问题,本文记录下3.2 app_mgr组件安装失败 的解决过程,因为这个问题卡了很久(可能也是因为笔者对python相关知识和蓝鲸产品不够熟悉), ...