问题标签 [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.

0 投票
1 回答
474 浏览

c++ - stxxl 从磁盘文件中保存和读取向量

我正在努力尝试以某种方式使用 stxxl 库,我不仅可以将数据从它们的向量结构存储到一个文件中,而且还可以在重新运行我的程序时从该文件中恢复它。

我发现您可以从文件(http://stxxl.sourceforge.net/tags/master/classstxxl_1_1vector.html#a4d9029657cc11315cb77955fae70b877)构造向量,但“文件”类仅包含这些函数(http://stxxl. sourceforge.net/tags/master/classstxxl_1_1file.html)无法(我可以看到)实际访问具有给定路径的现有文件。

以前在这个图书馆工作过的人是否知道如何做到这一点?

提前致谢

0 投票
1 回答
258 浏览

c++ - STXXL 处理字符串

我正在处理大型数据集。请问您如何将字符串存储在我想与 stxxl 一起使用的类中?我已经阅读了几个讨论,到处都说字符串不是 POD 类型,因此它不能存储在 stxxl::vector 中,但我不确定,因为我试过了,我检查了数据,一切似乎都很好。我在这里也看到了一种方法https://github.com/Project-OSRM/osrm-backend/blob/725b93a961625a7b04d54806d7e0f80252a6bcd0/extractor/extraction_containers.hpp,他们使用stxxl::vector,所以也许该库已更新以支持std: :细绳?

我还创建了将字符串存储为 POD 的代码,将字符串存储在 char 的向量中,并在映射中记住数组中的下限和上限索引。但是这种方法导致应用程序中使用了许多 std::maps。

};

我的应用程序中的问题是我存储了一些字符串数据,主要是街道和 POI 的名称。也许我使用了错误的库。如果是这样,你能推荐我在预处理时存储数据的更好方法吗?

0 投票
1 回答
84 浏览

c++ - 为什么使用“stxxl:Vector”作为其数据类型之一创建指向超出一定数量(30)的“结构”实例的指针会失败?

我在我的代码中使用 STXXL 库的 stxxl::vector 作为:

然后使用以下代码片段在循环中创建上述声明的结构的许多实例:

但是这个片段不会创建超过一定数量的“newVect”(30:在这种情况下)

但是,我通过将“stxxl:Vector”替换为其他一些内存数据类型来尝试相同的事情:

即使对于“100000”个新实例,上面创建的结构也可以正常工作:

每个系统资源保持不变。

请帮我解决一下这个。

“stxxl:Iterators”可以在这里提供帮助或作为替代方案吗?

在这种情况下,'stxxl:vector' 有什么样的行为?

更新

尝试从每次迭代中删除函数调用并将其完全放在循环之外,但没有帮助。示例代码:

0 投票
2 回答
207 浏览

c++ - C++:STXXL 中的哪种数据类型适合创建外部存储器二叉搜索树?

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

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

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

警告: 不要存储对外部向量元素的引用。在对 vector 元素的任何后续访问期间,此类引用可能会失效。

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

0 投票
1 回答
216 浏览

c++ - STXXL:如何对第二个元素上的向量对​​进行排序?

此处提供了类似的问题:如何根据对的第二个元素对对的向量进行排序?但我对外部内存排序感兴趣。

我曾尝试使用内部存储器排序中的类比,但错误发生在 STXXL 的 sorter_stream.h 文件中:

我的代码:

错误 :

更新:

将 min_value(),max_value() 函数的返回类型更改为 my_pair 为:

给出以下错误:

PS:作为新手 (Reputation<50) ,我不能发表评论,这就是为什么要写一个新问题。

0 投票
1 回答
137 浏览

c++ - 更改 stxxl:vector 缓存的大小

在我的算法中,我有两个阶段:

1) 使用占用尽可能多 RAM 的大数据结构 X 用记录填充文件 2) 对文件进行排序。现在有很多内存,因为 X 被释放了

所以我想用 STXXL 处理文件及其排序。但是,在第一阶段,STXXL 缓存的空间非常有限,而在第二阶段应该有很多。

所以理想情况下,我想在第一阶段用小缓存创建一个 stxxl::vector,填充它,然后在排序期间增加它的大小以加快速度。但是,我找不到更改向量缓存大小的函数。

我看到的一个解决方案是在第一阶段写入一个普通的“虚拟”二进制文件,并从中创建一个 stxxl::vector,但这会导致空间的双重使用,因为“虚拟”文件和 stxxl ::vector 将在某个时候同时存在。那么使用 stxxl 的真正方法是什么?

0 投票
1 回答
149 浏览

c++ - 将 stxxl::vector 映射到带有标题的文件

我有一个大型二进制 ( STL ) 文件,该文件以已知且固定大小的标头开头,然后以一组表示连续记录的固定大小缓冲区 (POD) 继续。

我想将文件的记录部分映射到一个stxxl::vector快速的核外处理。有一个接受 a 的 ctor
,但我不知道如何告诉 ctor 从正确的偏移量开始文件解析。 stxxl::vector<>stxxl::file

我可以这样做吗?如果可以,该怎么做?

0 投票
0 回答
423 浏览

c++ - 以 std::string 为键和 std::vector 为值的 Stxxl 映射

我需要一组数字的大地图。所以我使用的是 stxxl,它基本上类似于map<std::string, std::vector<int>>. 键是 3 个字母的标识符。地图中大约有3k个enteries,每个enteries最多可以包含500K个数字。在值中使用向量很重要,因为我需要更改它(添加/删除数字)。

问题是,在我插入所有数据后,当我尝试访问地图中的元素时,向量被破坏了。

例如,如果在上述插入之后,我将尝试访问地图:

然后我得到一个大小合适的向量,但它的所有元素都有一个值,0xfeeefeee而不是最初在插入向量中的数字。

0 投票
1 回答
249 浏览

c++ - 并行 STXXL 向量初始化

以下最小示例说明了 stxxl 在并行初始化容器时的行为(使用 openMP):

遇到任何一个

或者

如何在多个线程中分配 stxxl 容器?

0 投票
1 回答
86 浏览

c++ - Combining Streams and Iteration in STXXL

STXXL supports a streaming model of data processing. STXXL data can either be processed by iterating through it (e.g. using stxxl::for_each), or by converting to a stream mode (e.g. using streamify() where such stream transforms can be composed for efficient processing. The stream results can be converted back to iterators using materialize().

I have a bunch of stream transforms, that I want to apply to an input stream. However, I do not need to store the result in any output "container".
What I need is a materialize-like function that just drives the stream without taking any output iterators - essentially like stxxl::for_each.
Is there such a similar function in STXXL?

Naturally, I can write custom "do-nothing"-output-iterators and pass these to materialize(), but I am wondering if there is a more elegant solution.