C++ swap函数模板及其用法

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
c++中的swap操作可以用来交换两个相同类型容器的内容。例如,使用swap函数可以交换两个vector容器的内容。代码示例如下: ``` #include <vector> #include <iostream> int main() { std::vector<std::string> vec1(10); std::vector<std::string> vec2(24); swap(vec1, vec2); return 0; } ``` 上述代码中,我们创建了两个vector容器vec1和vec2,并分别初始化它们的大小为10和24。然后使用swap函数交换了它们的内容。这样,vec1中的内容变为原来的vec2的内容,vec2中的内容变为原来的vec1的内容。 此外,还有一种使用boost库中迭代器的swap操作的用法示例。代码示例如下: ``` #include <bits/stdc++.h> #include "boost/iterator/iterator_adaptor.hpp" using namespace std; template<typename P> class array_iter:public boost::iterator_adaptor<array_iter<P>,P> { static_assert( is_pointer_v<P> ); //保证P是一个指针 public: using super_type = typename array_iter::iterator_adaptor_; array_iter(P x):super_type(x){} //必要的构造函数 }; int main() { int a = {1, 2, 3}; array_iter<int*> start(a); array_iter<int*> finish(a + 10); start = 1; copy(start, finish, ostream_iterator<int>(cout)); return 0; } ``` 上述代码中,我们使用了boost库中的iterator_adaptor来自定义了一个array_iter迭代器类。它是array_iter类的一个模板,并继承自iterator_adaptor。在main函数中,我们创建了一个int类型的数组a,并使用array_iter迭代器来遍历这个数组。在这个示例中,我们将数组中的每个元素都设置为1,然后使用copy函数将数组中的元素输出到标准输出流中。 因此,c++中的swap操作可以用于交换容器的内容,而迭代器可以用于遍历和访问容器的元素。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [c++迭代器](https://blog.csdn.net/TOPEE362/article/details/126201656)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [C++-swap](https://blog.csdn.net/mrbone11/article/details/121171745)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值