关于c ++:同时迭代两个或多个容器的最佳方法是什么 您所在的位置:网站首页 vector怎么遍历 关于c ++:同时迭代两个或多个容器的最佳方法是什么

关于c ++:同时迭代两个或多个容器的最佳方法是什么

2024-01-10 23:27| 来源: 网络整理| 查看: 265

C ++ 11提供了多种遍历容器的方式。 例如:

基于范围的循环

1for(auto c : container) fun(c)

std :: for_each

1for_each(container.begin(),container.end(),fun)

但是,建议对两个(或更多个)相同大小的容器进行迭代以完成类似任务的方法是:

123for(unsigned i = 0; i >自动索引(C const&cont)- > range_proxy {return {0,cont.size()}; }

对于您的特定示例,只需使用

1std::copy_n(contB.begin(), contA.size(), contA.begin())

对于更一般的情况,可以使用Boost.Iterator的zip_iterator,它带有一个小的函数,使其可以在基于范围的for循环中使用。在大多数情况下,这将起作用:

1234567891011121314template auto zip_range(Conts&... conts)   -> decltype(boost::make_iterator_range(   boost::make_zip_iterator(boost::make_tuple(conts.begin()...)),   boost::make_zip_iterator(boost::make_tuple(conts.end()...)))) {   return {boost::make_zip_iterator(boost::make_tuple(conts.begin()...)),           boost::make_zip_iterator(boost::make_tuple(conts.end()...))}; } // ... for(auto&& t : zip_range(contA, contB))   std::cout


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有