前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >c++STL之常用拷贝和替换算法

c++STL之常用拷贝和替换算法

作者头像
西西嘛呦
发布于 2020-08-26 15:59:36
发布于 2020-08-26 15:59:36
35400
代码可运行
举报
运行总次数:0
代码可运行

copy:容器中指定元素拷贝到另一容器中

replace:将容器内指定范围内的旧元素改为新元素

replace_if:容器内指定范围为满足条件的元素替换为新元素

swap:互换两个容器的元素

1.copy

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include<iostream>
using namespace std;
#include <vector>
#include <algorithm>

//常用拷贝和替换算法 copy
void myPrint(int val)
{
    cout << val << " ";
}

void test01()
{
    vector<int>v1;
    for (int i = 0; i < 10; i++)
    {
        v1.push_back(i);
    }

    vector<int>v2;
    v2.resize(v1.size());
    copy(v1.begin(), v1.end(), v2.begin());

    for_each(v2.begin(), v2.end(), myPrint);
    cout << endl;
}

int main() {

    test01();

    system("pause");

    return 0;
}

2.replace

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include<iostream>
using namespace std;
#include <vector>
#include<algorithm>

class MyPrint
{
public:
    void operator()(int val)
    {
        cout << val << " ";
    }
};

//常用拷贝和替换算法 replace
void test01()
{

    vector<int>v;
    v.push_back(20);
    v.push_back(30);
    v.push_back(50);
    v.push_back(30);
    v.push_back(40);
    v.push_back(20);
    v.push_back(10);
    v.push_back(20);

    cout << "替换前:" << endl;
    for_each(v.begin(), v.end(), MyPrint());
    cout << endl;


    //将20 替换 2000
    replace(v.begin(), v.end(), 20, 2000);
    cout << "替换后:" << endl;
    for_each(v.begin(), v.end(), MyPrint());
    cout << endl;
}

int main() {

    test01();

    system("pause");

    return 0;
}

3.replace_if

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include<iostream>
using namespace std;
#include <vector>
#include <algorithm>

class MyPrint
{
public:
    void operator()(int val)
    {    
        cout << val << " ";
    }
};

class Greater30
{
public:
    bool operator()(int val)
    {
        return val >= 30;
    }
};

//常用拷贝和替换算法 replace_if
void test01()
{
    vector<int>v;
    v.push_back(10);
    v.push_back(40);
    v.push_back(20);
    v.push_back(40);
    v.push_back(30);
    v.push_back(50);
    v.push_back(20);
    v.push_back(30);

    cout << "替换前: " << endl;
    for_each(v.begin(), v.end(), MyPrint());
    cout << endl;

    //将大于等于30  替换为 3000
    replace_if(v.begin(), v.end(), Greater30(),3000);
    cout << "替换后: " << endl;
    for_each(v.begin(), v.end(), MyPrint());
    cout << endl;

}

int main() {

    test01();

    system("pause");

    return 0;
}

4.swap

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include<iostream>
using namespace std;
#include <vector>
#include <algorithm>

//常用拷贝和替换算法 swap
void myPrint(int val)
{
    cout << val << " ";
}
void test01()
{
    vector<int>v1;
    vector<int>v2;

    for (int i = 0; i < 10; i++)
    {
        v1.push_back(i);
        v2.push_back(i+100);
    }

    cout << "交换前: " << endl;
    for_each(v1.begin(), v1.end(), myPrint);
    cout << endl;
    for_each(v2.begin(), v2.end(), myPrint);
    cout << endl;

    cout << "-----------------" << endl;
    cout << "交换后: " << endl;

    swap(v1, v2);

    for_each(v1.begin(), v1.end(), myPrint);
    cout << endl;
    for_each(v2.begin(), v2.end(), myPrint);
    cout << endl;

}

int main() {

    test01();

    system("pause");

    return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-12-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
❤ 挑战C站最强C++ STL标准库总结(内含大量示例)
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家,(ノ´▽`)ノ♪-》点击这里->一个宝藏级人工智能教程网站。
全栈程序员站长
2022/09/09
1.4K0
❤ 挑战C站最强C++ STL标准库总结(内含大量示例)
c++STL之常用排序算法
sort:对容器元素进行排序 random_shuffle:洗牌,指定范围内的元素随机调整次序 merge:容器元素合并,并存储到另一容器中 reverse:反转指定范围内的元素 1.sort #include<iostream> using namespace std; #include <algorithm> #include <vector> #include <functional> //常用排序算法 sort void myPrint(int val) { cout << val <<
西西嘛呦
2020/08/26
3240
c++STL之常用集合算法
set_intersection:求两个容器的交集 set_union:求两个集合的并集 set_difference:求两个集合的差集 1.set_intersection #include<iostream> using namespace std; #include <vector> #include <algorithm> //常用集合算法 set_intersection void myPrint(int val) { cout << val << " "; } void test01
西西嘛呦
2020/08/26
4340
c++STL之常用遍历算法
需要引入头文件#include<algorithm> 1.for_each #include<iostream> using namespace std; #include <vector> #include <algorithm> class MyPrint { public: void operator()(int val) const{ cout << val << " "; } }; void printVector(int val) { cout
西西嘛呦
2020/08/26
3260
C++提高编程笔记合集
建立一个通用函数,其函数返回值类型和形参类型可以不具体制定,用一个虚拟的类型来代表。
CtrlX
2022/10/27
9600
C++提高编程笔记合集
STL学习笔记(16)常用STL算法
组成。 其中常用的功能涉及到比较,交换,查找,遍历,复制,修改,反转,排序,合并等。
轻舞飞扬SR
2021/07/08
5480
STL算法(拷贝/替换)简介copyreplacereplace_ifswap
简介 copy replace replace_if swap copy 集合拷贝 需要保证目的集合的空间足够 template<class _InIt, class _OutIt> inline _OutIt copy(_InIt _First, _InIt _Last, _OutIt _Dest) { // copy [_First, _Last) to [_Dest, ...) _DEPRECATE_UNCHECKED(copy, _Dest)
用户2929716
2018/08/23
3140
STL算法(拷贝/替换)简介copyreplacereplace_ifswap
algorithm中的排序算法详解
雨下不停,爱意难眠,说一下algorithm中的几个排序算法吧,干什么总要排个序吧,有单纯排序的算法题可以看一下,我写的码神说排序算法不多说了,来看吧,系好安全带,发车了!
秋名山码神
2022/12/13
2910
STL算法(for_each/transform)
用于逐个遍历容器元素,它对迭代器区间[first,last)所指的每一个元素,执行由单参数函数对象f所定义的操作。方法返回函数对象。
用户2929716
2018/08/23
3460
STL算法(for_each/transform)
常用拷贝和替换算法---copy
如果v里面存放的是自定义数据类型,当容器容积大于当前元素个数大小时,多出来的元素会出现随机值 可以利用resize的重载版本,给多出来的元素指定默认填充值
大忽悠爱学习
2021/03/02
3060
常用拷贝和替换算法---copy
STL-常用算法总结
transform(iterator beg1, iterator end1, iterator beg2, _func);//搬运容器
WuShF
2023/02/11
6160
STL-常用算法总结
⭐️STL⭐️之string和vector全解,❤️算法必备❤️<上>
码神本来是想一次性就把STL,都讲完的,但是上次爆肝5w字后发现效果并不好,所以就把STL拆分成了,三个小部分来讲解,感觉还是比较重要的,算法也在继续,但是我感觉干算法以前还是要讲一下——STL,所以发车了,去做自己喜欢的事情吧!
秋名山码神
2022/12/13
5150
C++STL初识,概念、六大组件、容器算法迭代器
STL大体分为六大组件,分别是:容器、算法、迭代器、仿函数、适配器(配接器)、空间配置器
CtrlX
2022/09/27
5530
c++STL之內建函数对象
STL内建了一些函数对象:算数仿函数、关系仿函数、逻辑仿函数 用法: 这些仿函数所产生的对象,用法和一般函数完全相同; 使用內建函数对象,需要引入头文件#<include><functional> 一、算数仿函数 #include<iostream> using namespace std; #include <functional> //内建函数对象头文件 //内建函数对象 算术仿函数 //negate 一元仿函数 取反仿函数 void test01() { negate<int>n;
西西嘛呦
2020/08/26
3550
transfrom算法
函数原型: #include<iostream> using namespace std; #include<functional> #include<vector> #include<algor
大忽悠爱学习
2021/03/02
2550
transfrom算法
C++中的vector容器(保姆级讲解)
并不是在原有空间之后续集新的空间,而是找更大的内存空间,然后将原数据拷贝新空间,释放原空间
莫浅子
2022/11/18
1.7K0
C++中的vector容器(保姆级讲解)
c++STL之常用算术生成算法
accumulate:计算容器元素累计总和 fill:向容器中添加元素 1.accumulate #include<iostream> using namespace std; #include <vector> #include <numeric> //常用算术生成算法 void test01() { vector<int>v; for (int i = 0; i <= 100; i++) { v.push_back(i); } //参数3
西西嘛呦
2020/08/26
3150
容器合并排序算法-----merge
注意: 两个容器必须都是有序的 要么都是升序,要么都是降序,如果不一样会报错 #include<iostream> using namespace std; #include<vector> #include<algorithm> #include<ctime> //random_shuffle void p(int val) { cout << val << " "; } void test01() { vector<int> v = { 1,2,3,4,5,6,7,8,9 }; vector<
大忽悠爱学习
2021/03/02
3360
容器合并排序算法-----merge
c++STL之常用查找算法
引入#include<algorithm> 算法简介: find:查找元素 find_if:按条件查找 adjacent_find:查找相邻房重复的元素 binary_search:二分查找 count:统计元素个数 count_if:按条件统计元素个数 1.find #include<iostream> using namespace std; #include <vector> #include <algorithm> #include <string> //常用查找算法 //find //查找 内
西西嘛呦
2020/08/26
4450
STL学习笔记(15)函数对象适配器
现在有这么个需求,在遍历容器的时候,希望将容器中的值全部加上 100 之后显示出来,怎么做?
轻舞飞扬SR
2021/07/08
2710
相关推荐
❤ 挑战C站最强C++ STL标准库总结(内含大量示例)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验