关于c ++:同时迭代两个或多个容器的最佳方法是什么 | 您所在的位置:网站首页 › vector怎么遍历 › 关于c ++:同时迭代两个或多个容器的最佳方法是什么 |
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 实验室设备网 版权所有 |