std::ranges::copy
时间: 2024-04-28 19:17:22 浏览: 144
range:C++ 中任意范围的库
`std::ranges::copy`是C++20中引的一个算法,用于将一个范围内的元素复制到另一个范围中。它的声明如下:
```cpp
template <class InputRange, class OutputIterator>
constexpr OutputIterator copy(InputRange&& rng, OutputIterator result);
```
其中,`InputRange`是一个表示输入范围的类型,可以是数组、容器或者其他支持迭代器的类型。`OutputIterator`是一个表示输出范围的迭代器类型,用于指定复制的目标位置。
`std::ranges::copy`函数会将输入范围中的元素复制到输出范围中,并返回指向复制结束位置的迭代器。复制的范围是从输入范围的起始位置到结束位置(不包括结束位置)。
下面是一个使用`std::ranges::copy`的示例代码:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
int main() {
std::vector<int> source = {1, 2, 3, 4, 5};
std::vector<int> destination;
std::ranges::copy(source, std::back_inserter(destination));
for (const auto& num : destination) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
```
输出结果为:`1 2 3 4 5`。
在上面的示例中,我们使用`std::ranges::copy`将`source`中的元素复制到`destination`中。`std::back_inserter`是一个输出迭代器,用于在容器的末尾插入元素。通过使用`std::back_inserter(destination)`作为`std::ranges::copy`的第二个参数,我们可以将复制的元素插入到`destination`的末尾。
需要注意的是,`std::ranges::copy`是C++20中引入的新特性,如果你使用的是较早的C++标准,可能无法使用该函数。在旧版本的C++中,你可以使用`std::copy`算法来实现类似的功能。
阅读全文