如何在 Julia 中表达引用和值

opu*_*111 2 memory-management reference julia

我有一个很大的结构数组,我想创建一个对较大数组中结构的引用的小数组。我如何在 Julia 中表达这一点?

例如,这是我的许多 Foo 结构的大数组

struct Foo
  bah
end
many_foos = [Foo(i) for i in 1:100000]
Run Code Online (Sandbox Code Playgroud)

这是我想要引用大数组中的 Foos 的小数组

select_foos = [foo for foo in many_foos if some_condition(foo)]
Run Code Online (Sandbox Code Playgroud)

我想在创建 many_foos 时分配一次内存,并且只为 select_foos 创建一个指针数组。

Julia 如何表达创建对某物的引用,而不是复制值?如何有效地创建大量结构?

非常感谢

Kri*_*son 7

你的代码已经做了你想要的。如果数组的元素类型不是因为它具有非类型化字段isbitstypeFoo则数组仅在行内存储它们的对象。

不过,总的来说,在 Julia 中没有必要考虑这个问题。在将 Julia 数组传递到例如 C 时,您只需要考虑内存布局,因为在那里您需要处理数组的原始内存。