gpt4 book ai didi

C++:STXXL 中的哪种数据类型适合创建外部内存二进制搜索树?

转载 作者:搜寻专家 更新时间:2023-10-31 02:22:09 25 4
gpt4 key购买 nike

我想创建一个外部存储器二进制搜索树数据结构,其数据位于使用 stxxl 作为库的外部存储器中。

为此,STXXL 中的哪种数据类型适合用作树中的节点。如果我们使用 stxxl:Vector 作为树的节点,我们如何保存指向它们的指针。

我在 STXXL:Vector 文档中读到,显然不可能使用非常合乎逻辑的指针。

Warning : Do not store references to the elements of an external vector. Such references might be invalidated during any following access to elements of the vector .

那么问题是什么是使用“stxxl”数据类型保存二叉搜索树数据结构的替代方案?

最佳答案

存储指向元素的迭代器而不是指向元素的指针/引用。指针/引用会因为分页到磁盘/从磁盘分页而失效,但迭代器不会失效。

例如:

// Safe to store this, not safe to store &nodes[node_index].
stxxl::vector<Node>::iterator node_it = nodes.begin() + node_index;

... 和 const_iterator 用于只读目的。

node_it 除非删除该元素,否则不会失效。与 STL 不同,如果您执行 push_back 之类的操作,它甚至不会失效。取消引用它将向磁盘写入页面/从磁盘读取页面(仅读取 const_iterator),因此您可以将其视为不会失效的指针。

关于C++:STXXL 中的哪种数据类型适合创建外部内存二进制搜索树?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30636076/

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