有没有一种简单的方法可以在 c++17 中实现这种设计模式?
std::set<uint32_t> first;
std::set<uint32_t> second;
for (uint32_t number : JoinIterator<uint32_t>(first, second)) {
<DO SOMETHING WITH number>
}
这将替换以下代码:
std::set<uint32_t> first;
std::set<uint32_t> second;
for (uint32_t number : first) {
<DO SOMETHING WITH number>
}
for (uint32_t number : second) {
<DO SOMETHING WITH number>
}
我发现的所有搜索结果都是关于并行循环遍历两个结构,而不是连续循环遍历结构。
最佳答案
使用 views::concat
来自 range-v3 :
for (uint32_t number : views::concat(first, second)) {
<DO SOMETHING WITH number>
}
这仅适用于具有相同基础类型的范围(在本例中为真)。
在 Boost(即 range-v2)中,这拼写为
boost::range::join(first, second)
.由于在 Boost 文档中没有直接显示,因此可以在
boost/range/join.hpp
中找到该函数。
关于c++ - 使用 foreach 循环连续迭代两个结构的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60552466/