std::copy可以拷贝一个pair吗
时间: 2023-12-14 19:02:51 浏览: 87
C++ 11 std::function和std::bind使用详解
是的,std::copy 函数可以拷贝一个包含 pair 元素的序列,只需要将迭代器的类型改为能够处理 pair 元素的迭代器即可。
例如,假设我们有一个包含多个 pair 元素的 vector,我们想要将其中的元素复制到另一个 vector 中,可以这样写:
```cpp
#include <iostream>
#include <vector>
#include <utility>
#include <algorithm>
int main() {
std::vector<std::pair<int, std::string>> v1 = {{1, "one"}, {2, "two"}, {3, "three"}};
std::vector<std::pair<int, std::string>> v2(3); // 存储复制结果的 vector
std::copy(v1.begin(), v1.end(), v2.begin()); // 复制 v1 中的元素到 v2 中
// 输出 v2 中的元素
for (auto p : v2) {
std::cout << p.first << " " << p.second << std::endl;
}
return 0;
}
```
输出结果为:
```
1 one
2 two
3 three
```
注意,在上面的代码中,我们需要使用 `std::pair<int, std::string>` 类型的迭代器来处理 pair 元素。
阅读全文