问题标签 [stxxl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java 中的 STXXL 等价物
我正在搜索一个为 Java 中的大型数据集设计的集合框架,其行为透明,就像STXXL为 C++ 所做的那样。
它应该透明地交换到磁盘,但比普通的基于操作系统的 VM 交换更有效。StringBuffer/String 替代品将是一大优势。
c++ - 外部存储器向量
我正在开发一个外部内存数据结构,我需要将数据放入一个向量结构中,该结构会自动进行交换(可能使用 LRU 策略)以保持固定的 RAM 内存。我试过 stxxl 向量结构,但问题是它不能存储动态结构,如std::vector
. 这不起作用:
是否有任何外部存储器结构库可以处理这些元素?
iphone - stxxl 和覆盖 cxx_constructor
我正在尝试使用 stxxl 作为向量的后备存储。如果我什么都不做,它会自动分配 1 gig 的磁盘空间,一切正常。但是我不需要分配那么多空间,事实上,我需要从我的最佳 512 兆存储空间优雅地扩展到最小的 128 兆存储空间。
不幸的是,我在我的 Objective-C 类中定义了 stxxl::vector 并且在该类的实例化时调用了 cxx_constructor 函数,该函数启动了 stxxl 并分配了一个演出,无论我喜欢与否。
有什么方法可以覆盖 cxx_constructor 调用并在它继续实例化我的类之前添加我的 init?我确实尝试过创建一个由 cxx_constructor 实例化的简单对象。然而不幸的是,由于某种未知的原因,cxx_constructor 两次调用了我的类的构造函数。
向该类添加静态以防止它多次实例化的唯一选择是?这绝对是一个不太优雅的选择。对于一个我很想知道为什么它被调用两次。
非常感谢任何信息!
编辑:这是我写的代码。
然后我在我的应用程序委托中声明它,如下所示:
然后,当我在 stxxl::Config 构造函数中使用断点运行我的应用程序时,断点会被命中两次。我不会在其他任何地方声明它。cxx_constructor 调用构造函数两次。
(还值得注意的是,我添加了自己的 stxxl::config::init 函数并取消了默认函数)
编辑 2:在构造函数的代码周围放置一个静态布尔值确实可以解决双重初始化问题,并且一切都按我的预期工作。虽然它是一个非常垃圾的解决方案:(
makefile - 带有 STXXL 的 Makefile
我需要将 STXXL 库用于我正在处理的软件项目,但由于某种原因,我在编译测试文件时遇到了麻烦。我对 makefile 不是很熟悉,所以我可能混淆了将一些库链接在一起。
我使用的虚拟文件是 Draw.h、Draw.cpp 和 driver.cpp。可以想象,Draw.h声明了一个方法draw(),在Draw.cpp中实现,driver.cpp包含main函数,包含Draw.h并调用draw()。
我使用的makefile是:
我得到的错误是
有任何想法吗?
c++ - 在 STXXL 映射中使用 const char*
我一直在寻找它,但我无法找到解决方案。对不起,这已经发布了。
我必须创建一个 stxxl::map 结构将 const char* 映射到 const char* (最佳方案是字符串到字符串,但我知道 stxxl 容器不接受非 POD)
我在为 const char* 定义 comp_type 结构时遇到问题。有没有人这样的例子?
这是我写的:
c++ - stxxl 断言“它!= root_node_.end()”失败
尝试在 stxxl 映射中插入元素时收到此断言失败错误。
整个断言错误如下:
resCache: /usr/include/stxxl/bits/containers/btree/btree.h:470: std::pair >, bool> stxxl::btree::btree::insert(const value_type&) [with KeyType = e_my_key, DataType = unsigned int, CompareType = comp_type, unsigned int RawNodeSize = 16384u, unsigned int RawLeafSize = 131072u, PDallocStrategy = stxxl::SR, stxxl::btree::btree::value_type = std::pair]:断言`it != root_node_ .end()' 失败。中止
任何想法?
编辑:这是代码片段
Edit2 这里有更多细节(我省略了常量,例如 MAX_QUERY_LEN)
c++ - 使用 stxxl 队列时“未分配指针”
我的代码似乎有效(由于上述错误,我没有尝试过使用大型数据集)。
代码:
我的简单.stxxl
很简单:disk=./testfile,0,syscall
但我的错误是:
我不确定如何解决它,在这种情况下我需要释放内存吗?如果这真的很基础,我还在学习 c++ 很抱歉(这只发生在我使用 stxxl 队列时)。
database - stxxl map
I am looking for a storage to index points in 2 dimensions. To be more specific, I would like to store the geometry of ways (or edges) in OpenStreetMap and have it searchable. Queries to the storage would be looking up geometry based on two endpoints of a way. This query would be run to reconstruct the geometry of a path found by an algorithm similar to Dijkstra, so the speed of geometry lookup is important.
Nodes in my case are just unsigned ints and geometry can be encoded as a string or as a vector of points, either way would work.
The number of nodes would be around 1 billion so keeping everything in memory does not work, so it would be nice to find an external or disk based storage.
I have already tried Stxxl but it doesn't seem to support non-POD types like string or vectors as values.
Thanks for suggestions in advance
c++ - 在 Qt 项目中使用 STXXL
如何让 qmake 将 stxxl.mk 文件包含到生成的 makefile 中?
我有一个 Qt 项目,它处理大文件(> RAM),因此想使用 STXXL。STXXL文档说:
构建应用程序
编译库后,一些 Makefile 变量将写入您的 STXXL_ROOT 目录中的 stxxl.mk [...]。该文件应包含在您的应用程序的 Makefile 中。
当然,我可以手动编辑 makefile 以添加该行include /path/to/stxxl.mk
,但是每次 .pro 文件都这样做非常乏味,因此 makefile 发生更改。
我已经在 .pro 文件中使用 qmake 命令搜索了一些解决方案,但无济于事。在一个论坛中,他们建议编辑 qmake 源并重新编译它,但如果程序将分发给其他人,他们的 qmake 中没有这个“修复”,这是没有选择的。
也许我想复杂并且有一个简单的解决方案。我希望这里有一些人在使用这种组合(Qt + STXXL)时确实解决了这个问题。
注意 这个问题Prepend/Append Makefile to a Qt generated Makefile要求完全相同,但解决方案不适合我的问题。
android - Android NDK r8b 下编译 STXXL
我正在尝试在 Android NDK r8b 下编译 STXXL(顺便说一句,我在较新的 r8c 下也有同样的问题)。
我正在使用 gnustl_static 进行编译。
我需要 C++11 支持所以最初我尝试设置
但这引发了关于 uint64_t 的错误。
所以我将标志更改为
这有点帮助,但是当它开始编译时,我得到一个与 gnu stl 相关的错误。
我还收到与此 _Arg 参数相关的更多错误。
因此,查看第一个函数如下所示:
我真的不明白问题出在哪里。gnu++11 没有定义__GXX_EXPERIMENTAL_CXX0X__
吗?或者问题是它没有在某个地方正确使用?我很困惑是什么导致了这个问题?我在 iphone 的 clang 下使用 gnu++11 编译了 STXXL,但我猜 iphone 可能使用了不同的 STL 实现。有没有人对我如何解决这个问题有任何想法?
如果您需要任何进一步的信息,请询问!
编辑:所以这里的评论之一是我的 application.mk
这是我的 android.mk:
编辑:有趣的是,我只是尝试在我发布的 stl_tree.h 函数中#error temp
的块内#ifdef __GXX_EXPERIMENTAL_CXX0X__
编译器不会在那部分抛出错误......所以定义永远不会被设置,这大概是我的问题的原因。我还专门添加了一个-D__GXX_EXPERIMENTAL_CXX0X__
,但这没有任何区别(它好像它被取消定义了)。