gpt4 book ai didi

c++ - std::upper_bound 中的 boost::transform_iterator 编译错误

转载 作者:行者123 更新时间:2023-11-27 23:23:57 38 4
gpt4 key购买 nike

我有一个按 z 顺序排序的节点列表 ( http://en.wikipedia.org/wiki/Z-order_curve )。我试图找到比 zPosition 大的第一个节点。iterTransform 对象采用迭代器并返回二进制位置表示(与 zPosition 类型相同)。这个类型可以通过pathCmp来比较

NodeIterT last = std::upper_bound(
boost::make_transform_iterator(begin, iterTransform), // return PathType
boost::make_transform_iterator(end, iterTransform),
zPosition,
pathCmp ); // takes two PathType arguments

编译时我得到

错误 C2440:“初始化”:无法从“boost::transform_iterator < UnaryFunc,Iterator,Reference,Value >”转换为“std::_Vector_iterator<_Myvec>”

这个最小化的例子有什么错误还是我需要提供更多的代码?

最佳答案

std::upper_bound 返回一个 transform_iterator。添加 .base() 以获取您包装的迭代器类型:

NodeIterT last = std::upper_bound(
boost::make_transform_iterator(begin, iterTransform), // return PathType
boost::make_transform_iterator(end, iterTransform),
zPosition,
pathCmp ).base();

假设 beginendNodeIterT 类型应该可以工作。

关于c++ - std::upper_bound 中的 boost::transform_iterator 编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10739442/

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