【C++】STL 算法 - 拷贝替换算法 ( 元素复制算法 - copy 函数 | 元素替换算法 - replace 函数 | 替换符合要求的元素算法 - replace_if 函数 )

这篇具有很好参考价值的文章主要介绍了【C++】STL 算法 - 拷贝替换算法 ( 元素复制算法 - copy 函数 | 元素替换算法 - replace 函数 | 替换符合要求的元素算法 - replace_if 函数 )。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。





一、元素复制算法 - copy 函数



1、函数原型分析


在 C++ 语言 的 标准模板库 ( STL , STL Standard Template Library ) 中 , 提供了 copy 元素复制算法函数 用于 将 一个容器中的元素 复制 到 另外一个 容器中 ;


copy 元素赋值函数 将 输入容器 的 [ 起始迭代器, 终止迭代器 ) 范围 内的 元素 复制 到输出序列中 , 从输出容器 的 指定开始位置迭代器 开始 存放 被复制过来的元素 ;

复制元素操作完成后 , 输出容器中 对应 起始位置迭代器 之后的元素 将被 输入容器 中的元素替换 ;

最终 copy 函数 返回一个迭代器 , 该迭代器 指向 输出容器 中最后一个被复制元素的下一个位置 ;


copy 元素复制算法 函数原型 如下 :

template <class InputIterator, class OutputIterator>  
OutputIterator copy(InputIterator first, InputIterator last, OutputIterator result);
  • 参数解析 :
    • InputIterator first 参数 : 输入容器 ( 被复制容器 ) 的 迭代器范围 的 起始迭代器 ( 包含该迭代器指向的元素 ) ;
    • InputIterator last 参数 : 输入容器 ( 被复制容器 ) 的 迭代器范围 的 终止迭代器 ( 不包含该迭代器指向的元素 ) ;
    • OutputIterator result 参数 : 输出容器 ( 复制目的地 ) 的 迭代器范围 的 起始迭代器 ( 包含该迭代器指向的元素 ) ;
  • 返回值解析 : OutputIterator 类型的迭代器 是 输出容器 ( 复制目的地 ) 的 迭代器 , 该 迭代器 指向 " 被拷贝的最后一个元素 的下一个位置 " ;

代码示例 :

	// 输入容器
	vector<int> source{9, 5, 2, 7};

	// 输出容器 该容器 空间大小不能小于 输入的迭代器范围
	vector<int> destination(source.size());

	// 遍历打印容器中元素内容
	copy(source.begin(), source.end(), destination.begin());

2、代码示例


代码示例 :

#include "iostream"
using namespace std;
#include <vector>
#include <algorithm>
#include "functional"

int main() {

	// 输入容器
	vector<int> source{9, 5, 2, 7};

	// 输出容器 该容器 空间大小不能小于 输入的迭代器范围
	vector<int> destination(source.size());

	// 遍历打印容器中元素内容
	copy(source.begin(), source.end(), destination.begin());

	// 遍历打印容器中元素内容
	for_each(destination.begin(), destination.end(), [](int a) {
		cout << a << " ";
		});
	cout << endl;
	
	// 控制台暂停 , 按任意键继续向后执行
	system("pause");
	return 0;
};

执行结果 :

9 5 2 7
Press any key to continue . . .

【C++】STL 算法 - 拷贝替换算法 ( 元素复制算法 - copy 函数 | 元素替换算法 - replace 函数 | 替换符合要求的元素算法 - replace_if 函数 ),C++,c++,算法,STL,开发语言,copy,replace,replace_if





二、元素替换算法 - replace 函数



1、函数原型分析


在 C++ 语言 的 标准模板库 ( STL , STL Standard Template Library ) 中 , 提供了 replace 元素替换算法函数 用于 将 一个容器中的 指定迭代器范围 的 元素 中 将 指定的 A 值 替换为 B 值 ;


replace 元素替换函数 将 输入容器 的 [ 起始迭代器, 终止迭代器 ) 范围 内的 元素 指定的 A 值 替换为 B 值 ;


replace 元素替换算法 函数原型 如下 :

template <class ForwardIterator, class T>  
void replace(ForwardIterator first, ForwardIterator last, const T& old_value, const T& new_value);
  • 参数解析 :
    • ForwardIterator first 参数 : 输入容器 ( 被复制容器 ) 的 迭代器范围 的 起始迭代器 ( 包含该迭代器指向的元素 ) ;
    • ForwardIterator last 参数 : 输入容器 ( 被复制容器 ) 的 迭代器范围 的 终止迭代器 ( 不包含该迭代器指向的元素 ) ;
    • const T& old_value 参数 : 被替换的 原容器中的 元素值 ;
    • const T& new_value 参数 : 进行替换插入容器的 新的元素值 ;
  • 返回值解析 : 该函数返回值为 void , 即 没有返回值 ;

代码示例 :

	// 输入容器
	vector<int> source{ 9, 5, 2, 7 };

	// 将容器中的 2 替换为 3 
	replace(source.begin(), source.end(), 2, 3);

2、代码示例


代码示例 :

#include "iostream"
using namespace std;
#include <vector>
#include <algorithm>
#include "functional"

int main() {

	// 输入容器
	vector<int> source{ 9, 5, 2, 7 };

	// 将容器中的 2 替换为 3 
	replace(source.begin(), source.end(), 2, 3);

	// 遍历打印容器中元素内容
	for_each(source.begin(), source.end(), [](int a) {
		cout << a << " ";
		});
	cout << endl;

	// 控制台暂停 , 按任意键继续向后执行
	system("pause");
	return 0;
};

执行结果 :

9 5 3 7
请按任意键继续. . .

【C++】STL 算法 - 拷贝替换算法 ( 元素复制算法 - copy 函数 | 元素替换算法 - replace 函数 | 替换符合要求的元素算法 - replace_if 函数 ),C++,c++,算法,STL,开发语言,copy,replace,replace_if





三、替换符合要求的元素算法 - replace_if 函数



1、函数原型分析


在 C++ 语言 的 标准模板库 ( STL , STL Standard Template Library ) 中 , 提供了 replace 元素替换算法函数 用于 将 一个容器中的 指定迭代器范围 的 符合要求的 元素 替换为 新的 值 ;


replace 元素替换函数 将 输入容器 的 [ 起始迭代器, 终止迭代器 ) 范围 内的 元素 中 符合要求的 元素 替换为 新的 值 ;


replace_if 替换符合要求的元素算法 函数原型 如下 :

template <class ForwardIterator, class UnaryPredicate, class T>  
void replace_if(ForwardIterator first, ForwardIterator last, UnaryPredicate p, const T& new_value);
  • 参数解析 :
    • ForwardIterator first 参数 : 输入容器 ( 被复制容器 ) 的 迭代器范围 的 起始迭代器 ( 包含该迭代器指向的元素 ) ;
    • ForwardIterator last 参数 : 输入容器 ( 被复制容器 ) 的 迭代器范围 的 终止迭代器 ( 不包含该迭代器指向的元素 ) ;
    • UnaryPredicate p 参数 : 一元谓词 , 将容器中的元素传入该谓词 , 如果返回 true 则替换该元素 , 否则不进行处理 ;
    • const T& new_value 参数 : 进行替换插入容器的 新的元素值 ;
  • 返回值解析 : 该函数返回值为 void , 即 没有返回值 ;

代码示例 :

bool is_big_than_3(int num) {
	return num > 3;
}

int main() {

	// 输入容器
	vector<int> source{ 9, 5, 2, 7 };

	// 将容器中的 大于 3 的值都替换为 888
	replace_if(source.begin(), source.end(), is_big_than_3, 888);
}

2、代码示例


代码示例 :

#include "iostream"
using namespace std;
#include <vector>
#include <algorithm>
#include "functional"

bool is_big_than_3(int num) {
	return num > 3;
}

int main() {

	// 输入容器
	vector<int> source{ 9, 5, 2, 7 };

	// 将容器中的 大于 3 的值都替换为 888
	replace_if(source.begin(), source.end(), is_big_than_3, 888);

	// 遍历打印容器中元素内容
	for_each(source.begin(), source.end(), [](int a) {
		cout << a << " ";
		});
	cout << endl;

	// 控制台暂停 , 按任意键继续向后执行
	system("pause");
	return 0;
};

执行结果 :

888 888 2 888
请按任意键继续. . .

【C++】STL 算法 - 拷贝替换算法 ( 元素复制算法 - copy 函数 | 元素替换算法 - replace 函数 | 替换符合要求的元素算法 - replace_if 函数 ),C++,c++,算法,STL,开发语言,copy,replace,replace_if文章来源地址https://www.toymoban.com/news/detail-807703.html

到了这里,关于【C++】STL 算法 - 拷贝替换算法 ( 元素复制算法 - copy 函数 | 元素替换算法 - replace 函数 | 替换符合要求的元素算法 - replace_if 函数 )的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C++】STL 算法 ② ( foreach 循环中传入 函数对象 / Lambda 表达式处理元素 | foreach 循环算法 | Lambda 表达式 - 匿名 函数对象 / 仿函数 )

    在 C++ 语言中 , std::foreach 循环 虽然 不是标准库的一部分 , 但是 C ++ 编译器 提供了对 该语法 的支持作为扩展 ; 使用 该 std::foreach 循环 , 可以用于 遍历 STL 标准模板库 中提供的容器 , 如 vector 单端数组 , list 双向链表 , map 映射 , set 集合 等 容器 中的元素 ; std::for_each 是一个算

    2024年02月02日
    浏览(65)
  • 【C++】STL 算法 - transform 变换算法 ① ( transform 函数原型 | 将 一个 或 两个 输入容器 中的元素 变换后 存储到 输出容器 中 )

    std::transform 是 STL 标准模板库 中的一个算法 , 该算法的作用是 用于对 容器 或 指定迭代器范围 的 每个元素 进行 指定的 \\\" 转换操作 \\\" , 并将 \\\" 转换结果 \\\" 存储到另一个容器中 ; std::transform 算法 接受 一个 或 两个输入范围 , 以及一个输出范围 , 并 根据提供的 一元函数对象 或

    2024年01月16日
    浏览(62)
  • C++ 补充之常用拷贝和替换算法

    在C++中,常用的拷贝和替换算法包括以下几种: std::copy:这个算法用于将指定范围内的元素复制到另一个容器中。它需要源容器的起始和结束迭代器以及目标容器的插入位置作为参数。 std::copy_n:与std::copy类似,但是可以指定要复制的元素数量,而不是源容器的结束迭代器。

    2024年03月10日
    浏览(34)
  • 8.1 C++ STL 变易拷贝算法

    C++ STL中的变易算法(Modifying Algorithms)是指那些能够修改容器内容的算法,主要用于修改容器中的数据,例如插入、删除、替换等操作。这些算法同样定义在头文件 algorithm 中,它们允许在容器之间进行元素的复制、拷贝、移动等操作,从而可以方便地对容器进行修改和重组

    2024年02月12日
    浏览(40)
  • 详解python列表等对象的赋值和复制(浅拷贝copy()及深拷贝deepcopy()的使用区别与示例)

    python虽然没有指针的概念,但是对象、引用、地址这些内容还是存在的,尤其是像列表对象、某类型对象的引用上,搞清楚对象变量的复制和赋值很有必要,不然容易出现“莫名其妙”的错误。 python中给一个变量 a 赋值列表实际上是创建了一个列表对象,并将该列表的地址赋

    2024年02月04日
    浏览(47)
  • C++之构造函数、析构函数、拷贝构造函数终极指南:玩转对象的诞生、生命周期与复制

    W...Y的主页 代码片段分享  前言: 在上篇内容里,我们初识了C++中的类与对象,了解了类的定义、类的实例化、 类的作用域等等,今天我们将继续深入了解类与对象的相关内容,学习构造函数、析构函数与拷贝构造函数,话不多说我们发车!!! 目录 类的6个默认成员函数

    2024年02月06日
    浏览(47)
  • SQL中的替换函数replace将字段中的匹配值进行替换

    目录 一、更新替换 二、查询替换   一、更新替换 例:将user表中的address字段中IP1替换为IP2 二、查询替换

    2024年02月16日
    浏览(53)
  • Python使用replace函数同时替换多个字符串

    用replace函数替换单个的字符或指定的字符串 比如将字符 \\\' a \\\' 替换成 \\\' A \\\'  但如果我想同时替换掉两个或多个字符串呢,直接调用多次就行了 将\\\' a \\\' 替换成 \\\' A \\\' ,同时将\\\' b \\\' 替换成 \\\' B \\\'  但这也有一个缺陷,就是你前面替换后的字符串如果和后面要替换的字符串相同的话(

    2024年02月11日
    浏览(47)
  • C++ 惯用法之 Copy-Swap 拷贝交换

    这是“C++ 惯用法”合集的第 3 篇,前面 2 篇分别介绍了 RAII 和 PIMPL 两种惯用法: RAII: Resouce Acquistion Is Initialization PIMPL:Pointer To Implemetation 正式介绍 Copy-Swap 之前,先看下《剑指 Offer》里的第☝️题: 如下为类型 CMyString 的声明,请为该类型添加赋值运算符函数。 这道题目虽

    2024年02月13日
    浏览(57)
  • Python replace()函数使用详解,Python替换字符串

    「作者主页」: 士别三日wyx 「作者简介」: CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」: 小白零基础《Python入门到精通》 replace() 可以 「替换」 字符串中的内容 语法 参数 old :(必选,字符串类型)被替换的字符串 new :(必选,

    2024年02月16日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包