📅  最后修改于: 2023-12-03 14:59:45.550000             🧑  作者: Mango
C++ STL(Standard Template Library)中的 <algorithm>
头文件提供了许多常用的算法,其中之一就是 unique_copy()
函数。这个函数用于从给定的输入范围复制元素到另一个输出范围,并且使得输出范围不包含重复的相邻元素。
unique_copy()
函数的语法如下所示:
template <class InputIt, class OutputIt>
OutputIt unique_copy(InputIt first, InputIt last, OutputIt d_first);
其中:
first
和 last
是输入范围的迭代器,表示要复制的元素范围。[first, last)
是左闭右开区间。d_first
是目标输出范围的迭代器,表示元素将被复制到的位置。unique_copy()
函数返回一个迭代器,指向输出范围中最后一个复制的元素的下一个位置。
unique_copy()
函数用于将输入范围中的元素复制到输出范围中,同时确保输出范围中不包含相邻的重复元素。具体地说,如果输入范围中的两个相邻元素相等,那么只会复制其中的一个元素到输出范围。对于非相邻元素的重复,会全部复制。
#include <iostream>
#include <algorithm>
#include <vector>
int main() {
std::vector<int> input = {1, 1, 2, 3, 3, 3, 4, 5, 5};
std::vector<int> output;
std::unique_copy(input.begin(), input.end(), std::back_inserter(output));
// 打印输出范围中的元素
for (auto element : output) {
std::cout << element << " ";
}
std::cout << std::endl;
return 0;
}
输出:
1 2 3 4 5
在上面的示例中,我们首先定义一个名为 input
的整数向量,其中包含一些重复的元素。然后,我们定义了一个新的空向量 output
。利用 std::back_inserter
inserter 是一种插入迭代器,它允许我们在输出范围的末尾添加新元素。我们使用 std::unique_copy()
函数将 input
中的元素复制到 output
中,确保输出范围中没有相邻的重复元素。
最后,我们通过遍历 output
向量并打印其中的元素,确认重复元素被移除,并且输出范围中的元素按顺序排列。
注意,在使用 std::unique_copy()
函数之前,必须确保输出范围有足够的空间来容纳所有的复制元素,否则会导致未定义行为。
这就是有关 C++ STL 中的 unique_copy()
函数的介绍。希望你能够理解并开始在你的程序中合理地使用它,以提高代码的质量和效率。