提升::flat_set的迭代器无法合并
boost::flat_set of iterators cannot merge
我正在尝试将boost::flat_set
用于我需要唯一的一小组迭代器。代码无法编译,因为对make_reverse_iterator
的调用不明确,但我不确定它是怎么发生的。我试图将问题简化为 MWE:
#include <boost/container/flat_set.hpp>
#include <set>
#include <iostream>
using Set = std::set<int>;
using SetIt = Set::iterator;
struct Comparator {
bool operator()(SetIt lhs, SetIt rhs) const {
return &(*lhs) < &(*rhs);
}
};
int main() {
std::set<int> x;
boost::container::flat_set<Set::iterator, Comparator> a;
boost::container::flat_set<Set::iterator, Comparator> b;
a.insert(x.insert(1).first);
a.insert(x.insert(2).first);
a.insert(x.insert(3).first);
a.insert(x.insert(4).first);
a.insert(x.insert(5).first);
b.insert(x.insert(3).first);
b.insert(x.insert(4).first);
b.insert(x.insert(5).first);
b.insert(x.insert(6).first);
b.insert(x.insert(7).first);
a.merge(b);
for (auto v : a)
std::cout << *v << 'n';
return 0;
}
这个问题显然在Boost 1.67 中得到了修复。
我在Boost 1.66 中修复了错误。
相关文章:
- 使用std::multimap迭代器创建std::list
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- C++中带有List类的迭代器Segfault
- 如何在c++迭代器类型中包装std::chrono
- 集合上的输出迭代器:assign和increment迭代器
- Boost Spirit,获取迭代器内部语义动作
- 对于set上的循环-获取next元素迭代器
- 为什么output_editor Concept不需要output_e迭代器标记
- c++17文件系统::recursive_directory迭代器()在mac上没有给出这样的目录,但在windows上
- 使用迭代器时如何访问对象在向量中的位置?
- std::vector::迭代器是否可以合法地作为指针
- 跟随整数索引列表的自定义类迭代器
- 不明白迭代器,引用和指针失效,一个例子
- 我可以使用反向迭代器作为ForwardIt吗
- ESP8266单片机矢量迭代器的C++问题
- 如何在C++中将迭代器作为函数参数传递
- 在C++中使用迭代器合并排序
- 提升::flat_set的迭代器无法合并
- 使用迭代器进行合并排序中的一个缓冲区
- 使用向量迭代器的合并矢量