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 ...
随机推荐
- ILRuntime的TestCase
基于ILRuntime 1.6.3版本,在ILRuntime中提供测试用例,建议在下载ILRuntime之后先跑一遍官方的测试用例,对比自己使用ILRuntime的性能和官方数据是否一致 测试工具 测 ...
- TienChin 项目改造完善&项目结构分析
项目改造完善 更改 Banner Banner 生成网站:https://bootschool.net/ascii 更改启动类中的 Banner !> 如果不生效,需要重新编译一下项目工程(出现 ...
- 声明式API和命令式API的区别
声明式API 声明式和命令式的对比 Kubernetes 声明式 API 的工作原理 参考 声明式API 声明式和命令式的对比 命令式 命令式有时也称为指令式,命令式的场景下,计算机只会机械的完成指定 ...
- 8.1 C++ 标准输入输出流
C/C++语言是一种通用的编程语言,具有高效.灵活和可移植等特点.C语言主要用于系统编程,如操作系统.编译器.数据库等:C语言是C语言的扩展,增加了面向对象编程的特性,适用于大型软件系统.图形用户界面 ...
- Swift中发布-订阅框架Combine的使用
Combine简介 Combine是一个苹果用来处理事件的新的响应式框架,支持iOS 13及以上版本. 你可以使用Combine去统一和简化在处理类似于target-action,delegate,k ...
- 深入浅出Java多线程(七):重排序与Happens-Before
引言 大家好,我是你们的老伙计秀才!今天带来的是[深入浅出Java多线程]系列的第七篇内容:重排序与Happens-Before.大家觉得有用请点赞,喜欢请关注!秀才在此谢过大家了!!! 在上一篇文章 ...
- Delphi-判断一个对象是否释放,改造官方的Assigned
直接上例子了,基础知识自己去了解,首先定义一个类: TPerson = class public name: string; age: Integer; constructor Create(name ...
- BZOJ3364 Distance Queries 距离咨询 题解
原题 简化题意:有一棵 \(n\) 个点的树, \(q\) 组询问,每次询问回答两点间的距离. 令 \(dis[i][j]\) 表示 \(i\) 到 \(j\) 的距离,根节点为 \(rt\) ,则有 ...
- NC16655 [NOIP2005]过河
题目链接 题目 题目描述 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很讨厌踩在这些石子上.由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙可 ...
- P3078题解
P3078题解 看到题解区,我有点震惊,什么贪心.线段树.各种优化都有,在此%%%.但其实这道题一个小小的差分就可解决. 前置芝士:前缀和/差分 by OI Wiki 题意简述 在一个 $card$ ...