小编Alp*_*ack的帖子

从 Vec 中删除一系列项目

Vec在 Rust 中有 100 个项目,我需要删除索引在 10 到 30 之间的每个项目。一种方法是单独删除每个元素,如下所示:

for i in 10..30 {
    vec.remove(i);
}
Run Code Online (Sandbox Code Playgroud)

但这会导致每个删除的项目都有一个 memcpy,因为每次删除一个元素时,Vec 的其余部分都必须向左移动。如何一次从 Vec 中删除整个范围的项目,以只导致一个 memcpy 的方式?

rust

2
推荐指数
1
解决办法
125
查看次数

int、nativeint、int64 和 int32 之间有什么区别?

根据手册,OCaml 有 4 种整数文字:

\n
integer-literal ::= [-]\xe2\x80\x84(0\xe2\x80\xa69)\xe2\x80\x84{\xe2\x80\x840\xe2\x80\xa69\xe2\x80\x84\xe2\x88\xa3\xe2\x80\x84_\xe2\x80\x84}\n    \xe2\x88\xa3   \xe2\x80\x84[-]\xe2\x80\x84(0x\xe2\x80\x84\xe2\x88\xa3\xe2\x80\x840X)\xe2\x80\x84(0\xe2\x80\xa69\xe2\x80\x84\xe2\x88\xa3\xe2\x80\x84A\xe2\x80\xa6F\xe2\x80\x84\xe2\x88\xa3\xe2\x80\x84a\xe2\x80\xa6f) {\xe2\x80\x840\xe2\x80\xa69\xe2\x80\x84\xe2\x88\xa3\xe2\x80\x84A\xe2\x80\xa6F\xe2\x80\x84\xe2\x88\xa3\xe2\x80\x84a\xe2\x80\xa6f\xe2\x80\x84\xe2\x88\xa3\xe2\x80\x84_\xe2\x80\x84}\n    \xe2\x88\xa3   \xe2\x80\x84[-]\xe2\x80\x84(0o\xe2\x80\x84\xe2\x88\xa3\xe2\x80\x840O)\xe2\x80\x84(0\xe2\x80\xa67)\xe2\x80\x84{\xe2\x80\x840\xe2\x80\xa67\xe2\x80\x84\xe2\x88\xa3\xe2\x80\x84_\xe2\x80\x84}\n    \xe2\x88\xa3   \xe2\x80\x84[-]\xe2\x80\x84(0b\xe2\x80\x84\xe2\x88\xa3\xe2\x80\x840B)\xe2\x80\x84(0\xe2\x80\xa61)\xe2\x80\x84{\xe2\x80\x840\xe2\x80\xa61\xe2\x80\x84\xe2\x88\xa3\xe2\x80\x84_\xe2\x80\x84}\n \nint32-literal   ::= \xe2\x80\x84integer-literal\xe2\x80\x84l\n \nint64-literal   ::= \xe2\x80\x84integer-literal\xe2\x80\x84L\n \nnativeint-literal   ::= \xe2\x80\x84integer-literal\xe2\x80\x84n\n
Run Code Online (Sandbox Code Playgroud)\n

检查这些文字的类型(使用 utop)给出以下结果:

\n
    \n
  • 123 : int
  • \n
  • 123l : int32
  • \n
  • 123L : int64
  • \n
  • 123n : nativeint
  • \n
\n

int32和 的含义很明显,但是和int64之间有什么区别,它们与显式大小的 32/64 位整数有何关系?intnativeint

\n

ocaml types integer

1
推荐指数
1
解决办法
474
查看次数

标签 统计

integer ×1

ocaml ×1

rust ×1

types ×1