Python 的 itertools 实现了chain http://docs.python.org/library/itertools.html#itertools.chain迭代器本质上连接了许多不同的迭代器以提供单个迭代器的所有内容。
C++中有类似的东西吗?快速浏览一下 boost 库并没有发现类似的东西,这让我感到非常惊讶。这个功能实现起来困难吗?
在调查类似问题时遇到了这个问题。
即使问题很老,现在在 C++ 11 和 boost 1.54 的时代,使用升压范围 http://www.boost.org/doc/libs/1_54_0/libs/range/doc/html/index.html图书馆。它具有一个join-功能 http://www.boost.org/doc/libs/1_54_0/libs/range/doc/html/range/reference/utilities/join.html,它可以将两个范围合并为一个范围。在这里,您可能会遭受性能损失,作为最低通用范围概念(即单程范围或前进范围 http://www.boost.org/doc/libs/1_54_0/libs/range/doc/html/range/concepts/等)用作新范围的类别,并且在迭代期间可能会检查迭代器是否需要跳转到新范围,但您的代码可以轻松编写为:
#include <boost/range/join.hpp>
#include <iostream>
#include <vector>
#include <deque>
int main()
{
std::deque<int> deq = {0,1,2,3,4};
std::vector<int> vec = {5,6,7,8,9};
for(auto i : boost::join(deq,vec))
std::cout << "i is: " << i << std::endl;
return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)