- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
在stxxl
常见问题解答,我发现了这个:
Parameterizing STXXL Containers
STXXL container types like stxxl::vector can be parameterized only with a value type that is a POD (i.e. no virtual functions, no user-defined copy assignment/destructor, etc.) and does not contain references (including pointers) to internal memory. Usually, "complex" data types do not satisfy this requirements.
This is why
stxxl::vector<std::vector<T> >
andstxxl::vector<stxxl::vector<T> >
are invalid. If appropriate, usestd::vector<stxxl::vector<T> >
, or emulate a two-dimensional array by doing index calculation.
无法使用stxxl::vector<std::vector<T> >
非常有道理,因为 stxxl
容器在调整容器大小时不会调用所包含元素的构造函数或析构函数。但是如何存储这样的结构:
struct S {
int* a;
}
如果我保证 a
指向的对象只要 stxxl::vector<S>
有效实例存在,存储这个 struct
有什么问题?进入stxxl::vector<S>
?如果 S
的特定实例必须移动到磁盘,然后 a
的值指针写在磁盘上。稍后,指针值被恢复,我可以使用它了。显然,指针值也依赖于机器和实例,但即使我处理了指向对象的生命周期,这还是个问题吗?我没有通过套接字发送序列化对象,也没有将序列化对象存储在数据库中供以后使用。
我错过了什么吗?
编辑:有人提醒我stxxl
不复制指针对象,因此当我检索 struct S
的实例时,我可能会得到一个指向垃圾的指针稍后的。我知道。我将保证指针对象在程序的整个生命周期内有效。
最佳答案
(including pointers) to internal memory
这意味着指向结构成员的指针,或者指向容器管理的内存的指针。例如。你有
struct Foo {
int *a;
int b;
};
Foo f;
f.a = &f.b
由于 f.a
现在指向结构的一个成员,并且可以复制该结构,因此指针可能无效。类似地,如果指针指向容器管理的任何其他结构 Foo - 也可以四处移动。
如果您只有一个指针,并管理它指向的内容,您应该没问题。
关于c++ - 为什么存储指向内部存储器的普通指针的结构不能存储在 stxxl 容器中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21990478/
假设我有一个 View ,它可以生成 model.fetch() 然后向服务器发出请求。 我想实现: 1) 能够记住结果的检查器 2) 仅当对服务器的最后一次请求早于十分钟时才刷新结果(向服务器发出请
Closed. This question needs to be more focused。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅关注editing this post一个问题。 6
我想将数据从闪存复制到 RAM。 那么如何在 DMA Controller 中设置 RAM 的目标内存地址,以便它可以使用其 channel 将数据从源地址(在闪存中)复制到 RAM 内存。 我是在
我有以下代码行,它将字符串 TesT 存储在 8051 微 Controller 的代码存储器中。 char code *text_to_compare = "TesT"; 如何在 IDATA 内存
我在 Raspberry Pi Pico 上使用 Circuit Python 为我提供键盘快捷键的硬件按钮。我使用的是 Circuit Python 而不是 MicroPython,因为它具有 US
我是一名优秀的程序员,十分优秀!