gpt4 book ai didi

C++ boost::multi_index: iterator_to成员函数的顺序

转载 作者:行者123 更新时间:2023-11-28 05:37:01 24 4
gpt4 key购买 nike

阅读 boost::multi_index 引用文献,我发现 iterator_to 方法具有恒定顺序。这怎么可能?我的意思是,如果迭代器是一个不同于它所代表的 value_type 的对象,容器怎么可能在不搜索索引的情况下找到它们对应的内部节点?

我能想到的唯一解决方案是容器的“内部节点”(或任何它是什么)的地址与其持有的 value_type 相同(例如,将节点头放在 value_type 的正下方什么的) .如果传递的参数是对内部value_type的引用,则可以很容易地通过参数的地址构造相应的迭代器来获取红黑节点。

但是!!不能有两个对象具有相同地址的 C++ 标准限制怎么样?对齐、填充、填充或任何可能在内存级别发生的事情呢?

最佳答案

您的直觉是正确的:该值是更大节点结构的一部分(如解释的实例 here )并且 iterator_to 仅根据 的地址计算节点的地址value_type 子对象。现在,所涉及的指针算法依赖于节点(或存储值的基类)是 standard-layout 的事实。 ,这保证了指向第一个子对象(值)的指针可以转换为指向结构(节点)的指针:相关代码可以查看here .

关于C++ boost::multi_index: iterator_to成员函数的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38043016/

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