gpt4 book ai didi

c++ - 在 boost transformed() 之后比较嵌套迭代器

转载 作者:太空宇宙 更新时间:2023-11-04 12:59:40 26 4
gpt4 key购买 nike

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 iteratoradvance_past_empty_inner_containers() 中使用此比较。

这是怎么回事?我该如何解决?

最佳答案

这将返回 _ 的拷贝:[](const auto& _) {return _;

我没有查看代码,但如果迭代器对每个解引用应用转换,我一点也不会感到惊讶,这意味着每次你解引用 result.begin() (使用 ->) 你会得到一个不同的 vector 拷贝。不同 vector 中的迭代器不能相互比较。

关于c++ - 在 boost transformed() 之后比较嵌套迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44792175/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com