c++拷贝与替换算法

一:

copy 算法是 C++ STL 中的一个常用算法,用于将一个范围内的元素复制到另一个范围。它的函数原型如下:

template<class InputIt, class OutputIt> OutputIt copy(InputIt first, InputIt last, OutputIt d_first);

这个算法接受三个参数:

  • firstlast 是输入范围的迭代器,表示要复制的元素范围。first 指向要复制的第一个元素,last 指向要复制的最后一个元素的下一个位置。
  • d_first 是输出范围的迭代器,表示复制的目标位置。复制的元素将从 d_first 开始,覆盖原有的元素,直到复制完所有的元素。

std::copy 算法会将输入范围 [first, last) 中的元素复制到输出范围 [d_first, d_first + (last - first)) 中。它会返回一个迭代器,指向复制的范围的下一个位置,即 d_first + (last - first)

cpp 复制代码
void test01()
{
	vector<int>v = { 1,2,5,3,2 };
	vector<int>v2;
	v2.resize(v.size());
		copy(v.begin(), v.end(), v2.begin());
		for_each(v2.begin(), v2.end(), [](int val)->void {cout << val << " "; });
}

二:

replace 算法是 C++ STL 中的一个常用算法,用于替换容器中的所有匹配元素。它的函数原型如下:

template<class ForwardIt, class T> void replace(ForwardIt first, ForwardIt last, const T& old_value, const T& new_value);

这个算法接受四个参数:

  • firstlast 是容器中的迭代器,表示要替换的元素范围。first 指向要替换的第一个元素,last 指向要替换的最后一个元素的下一个位置。
  • old_value 是要被替换的值。
  • new_value 是替换后的值。

std::replace 算法会遍历输入范围 [first, last) 中的所有元素,将与 old_value 相等的元素替换为 new_value

cpp 复制代码
struct myfunc
{
	bool operator()(int val)
	{
		return val > 3;
	}
};
void test02()
{
	vector<int>v = { 1,2,5,3,2 };
	for_each(v.begin(), v.end(), [](int val)->void {cout << val << " "; });
	cout << endl;
	replace(v.begin(), v.end(), 2, 200);
	for_each(v.begin(), v.end(), [](int val)->void {cout << val << " "; });
	replace_if(v.begin(), v.end(), myfunc(), 200);
	cout << endl;
	for_each(v.begin(), v.end(), [](int val)->void {cout << val << " "; });
}

三:

swap是 C++ STL 中的一个常用算法,用于交换两个变量的值。它的函数原型如下:

template<class T> void swap(T& a, T& b);

cpp 复制代码
void test03()
{
	vector<int>v{ 1,2,3,4 };
	vector<int>v1{6, 7, 8, 9};
	swap(v, v1);
	for_each(v.begin(), v.end(), [](int val)->void {cout << val << " "; });
	cout << endl;
	for_each(v1.begin(), v1.end(), [](int val)->void {cout << val << " "; });
	cout << endl;
}
相关推荐
飞天狗1111 分钟前
2024 山东省ccpc省赛
c++·算法
卡尔曼的BD SLAMer14 分钟前
计算机视觉与深度学习 | Python实现EMD-SSA-VMD-LSTM-Attention时间序列预测(完整源码和数据)
python·深度学习·算法·cnn·lstm
愚润求学1 小时前
【Linux】进程间通信(一):认识管道
linux·运维·服务器·开发语言·c++·笔记
珊瑚里的鱼1 小时前
【滑动窗口】LeetCode 1658题解 | 将 x 减到 0 的最小操作数
开发语言·c++·笔记·算法·leetcode·stl
落樱弥城1 小时前
角点特征:从传统算法到深度学习算法演进
人工智能·深度学习·算法
共享家95272 小时前
哈希的原理、实现
c++·算法
进击的小白菜2 小时前
用Java实现单词搜索(LeetCode 79)——回溯算法详解
java·算法·leetcode
珂朵莉MM2 小时前
2024 睿抗机器人开发者大赛CAIP-编程技能赛-专科组(国赛)解题报告 | 珂学家
开发语言·人工智能·算法·leetcode·职场和发展·深度优先·图论
小智学长 | 嵌入式2 小时前
进阶-数据结构部分:2、常用排序算法
java·数据结构·算法
少了一只鹅2 小时前
字符函数和字符串函数
c语言·算法