c++ - 如何将 boost::combine 限制为两个范围的最小值
问题描述
找到以下作为段错误的来源只花了我大约 4 小时的工作:
#include <boost/range/combine.hpp>
#include <boost/foreach.hpp>
#include <iostream>
#include <vector>
#include <list>
int main(int, const char*[])
{
std::vector<int> v;
std::list<char> l;
for (int i = 0; i < 5; ++i)
{
v.push_back(i);
l.push_back(static_cast<char>(i) + 'a');
}
v.push_back(5);
int ti;
char tc;
BOOST_FOREACH(boost::tie(ti, tc), boost::combine(v, l))
{
std::cout << '(' << ti << ',' << tc << ')' << '\n';
}
return 0;
}
如果你执行这个例子,你会注意到,只要更长的范围有值,combine 就会愉快地迭代。我在文档中没有看到这一点。
有没有办法将迭代限制在两个范围中的较短者?
解决方案
推荐阅读
- python - 在特定 ID 列上合并两个 DataFrame(数据集)但具有日期条件
- html - 如何将文字放在图像旁边?
- javascript - 如何将 Axios API 与 Chart.js 和 React.js 一起使用
- r - 有没有办法打印随机值
- r - 将完整地址列拆分为多列
- bash - sed 插入行命令以添加带有换行符的文本 OSX
- python - 如何检查列是否包含反斜杠
- javascript - 字符串匹配/子字符串/替换/拆分 JavaScript ,
- php - PHP 和数据库中的链接 $row
- ios - Swft iOS 如何获取外部框架的大小(Cocoapod 包)