【发布时间】:2023-03-09 01:27:01
【问题描述】:
vector<vector<int>> input{ { { 1, 2 },{ 3, 4 } } };
auto result = input | boost::adaptors::transformed([](const auto& _) {return _; });
result.begin()->begin() == result.begin()->end();
如果我使用 VS2015 和 _ITERATOR_DEBUG_LEVEL=2 运行此程序,那么它会在 _Compat(const _Myiter& _Right) 中触发此错误:
_DEBUG_ERROR("vector iterators incompatible");
这很重要,因为Flattening iterator 在advance_past_empty_inner_containers() 中使用了这种比较。
发生了什么事?我该如何解决?
【问题讨论】:
-
让我知道 1 和 2 是这里比较的对象还是别的什么
-
代码不是比喻。 1 和 2 是整数文字。
-
好的,您的代码正在比较地址!这让我想知道这一点??
标签: c++ c++11 boost-range boost-adaptors