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 ...
随机推荐
- c#通过表达式树优雅的实现分组取TopN笔记
需要引入nuget包来实现ef.functions调用row_number Thinktecture.EntityFrameworkCore.SqlServer 调用方式: //顺排 context. ...
- 2020第二届长安杯wp
1 检材 1 的操作系统版本是 A. CentOS release 6.5 (Final) B. Ubuntu 16.04.3 LTS C. Debian GNU/Linux 7.8 (wheezy) ...
- 从嘉手札<2023-11-01>
最近心态不好,如同此刻的天气,浓雾扰扰,看不见前途未来,也想不起过去. 一则是研究没有进展,二则是感情纷扰,其实再多的纷扰也都不过是自己内心的那层桎梏,可人不能总能保持理性的: 就像很多快乐的事情是简 ...
- npm查看插件所有版本命令
npm view webpack versions npm view webpack versions
- docker中的mysql时区修改
永久修改 进入容器 docker exec -it mysql5.7 bash 查看当前时区 date -R 修改时区 cp /usr/share/zoneinfo/PRC /etc/localtim ...
- iPhone 15 Pro Max的Type-C接口有多牛?实测USB3比USB2快11倍
苹果最新的iPhone 15系列和iPhone 15 Pro系列新机,尽管两者都是Type-C接口,但速度相差20倍. 据了解,iPhone 15 Pro/Max搭载的苹果A17 Pro芯片内含专门的 ...
- CF1764H Doremy's Paint 2 题解
题目链接:CF 或者 洛谷 高分题,感觉挺有意思的题,值得一提的是这个题的 \(1\) 和 \(3\) 版本却是两个基础题. 一开始以为跟这道差不多:P8512 [Ynoi Easy Round 20 ...
- 零基础入门Vue之窥探大法——计算与侦听
前言 在 上一小节 我介绍了我学习vue入门 插值语法 的过程. 在本篇,我将记录我对vue的 计算属性和侦听器 的学习记录 注:本篇对于"侦听"和"监听"是一 ...
- DBSAT脚本快速收集方法
DBSAT是Oracle官方提供的脚本,用于数据库的安全评估检查,用户可以放心下载使用. 下载链接具体参见MOS: Oracle Database Security Assessment Tool ( ...
- macOS 远程桌面windows方法
1.利用微软官方的软件:https://learn.microsoft.com/en-us/windows-server/remote/remote-desktop-services/clients/ ...