使用新的基于范围的 for 循环,我们可以编写如下代码:
for(auto x: Y) {}
哪个 IMO 是一个 巨大 的改进(例如)
for(std::vector<int>::iterator x=Y.begin(); x!=Y.end(); ++x) {}
它可以用来循环两个同时的循环,比如 Python 的 zip
函数吗?对于不熟悉 Python 的人,代码:
Y1 = [1,2,3]
Y2 = [4,5,6,7]
for x1,x2 in zip(Y1,Y2):
print x1,x2
作为输出给出 (1,4) (2,5) (3,6)
原文由 Hooked 发布,翻译遵循 CC BY-SA 4.0 许可协议
警告: 从 Boost 1.63.0(2016 年 12 月 26 日)起,
boost::zip_iterator
和boost::combine
将导致未定义的行为,如果输入容器的长度不同(它可能会崩溃或迭代超出结束)。从 Boost 1.56.0(2014 年 8 月 7 日)开始,您可以 使用
boost::combine
(该功能存在于早期版本中,但未记录):这将打印
在早期版本中,您可以自己定义一个范围,如下所示:
用法是一样的。