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 ...
随机推荐
- JQuery 源码解析一
网上已经有很多解读 jQuery 源码的文章了,作为系列开篇的第一篇,思前想去起了个[深入浅出jQuery]的标题,资历尚浅,无法对 jQuery 分析的头头是道,但是 jQuery 源码当中确实有着 ...
- 华为云虚拟IP申请
在上一篇文章当中我们搭建好了我们的 Nginx,这节呢,我们主要就是搭建我们的 Keepalive 与 Haproxy,搭建之前我们首先不要将我们华为云上面的弹性公网IP给取消了后续在取消,这次我介绍 ...
- 开启中文智能之旅:探秘超乎想象的 Llama2-Chinese 大模型世界
"开启中文智能之旅:探秘超乎想象的 Llama2-Chinese 大模型世界" 1.国内Llama2最新下载地址 本仓库中的代码示例主要是基于Hugging Face版本参数进行调 ...
- Python 基础知识点归纳
Python 是一种跨平台的计算机程序设计语言,是一种面向对象的动态类型语言,笔记内容包括编译安装python,python列表,字典,元组,文件操作等命令的基本使用技巧. 编译安装 Python P ...
- LyScript 计算片段Hash并写出Excel
本案例将学习运用LyScript计算特定程序中特定某些片段的Hash特征值,并通过xlsxwriter这个第三方模块将计算到的hash值存储成一个excel表格,本例中的知识点可以说已经具备了简单的表 ...
- 月薪10K码农,跳槽到40K架构师,技术学习路线图汇总
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.介绍 Hey there! Roadmap to becoming a web devel ...
- Intel自曝未来三代酷睿!AI性能涨2倍、再涨2倍
根据最新财报数据,Intel 2023年第四季度154.1亿美元,同比增长10%,全年收入542亿美元,同比下跌14%,预计2024年第一季度收入122-132亿美元. 其中,酷睿处理器业务为主的CC ...
- 图(树)的深度优先遍历dfs
图的深度优先遍历 深度优先,即对于一个图或者树来说,在遍历时优先考虑图或者树的单一路径的深度.示意图如下 即深度优先搜索的核心就是对一个路径一直向下搜索,当搜索到头时就回溯到前一状态再寻找别的路 深搜 ...
- XD刷机报错bad CRC
测试需要,给一台1/4 rack的X8M HC刷机,使用oeda配置好的xml文件,执行命令列出本次刷机的所有步骤: [root@dbm11dbadm01 linux-x64]# ./install. ...
- 20.3 DLL入口函数--《Windows核心编程》
如果在执行一些与进程或者线程有关的初始化或者销毁工作的时候,需要 DllMain.如果只需要创建一个包含资源的DLL,不需要这个函数. B00L WINAPI DllMain(HINSTANCE hi ...