【发布时间】:2013-01-23 07:33:33
【问题描述】:
是否可以使用 memcpy 来复制数组的一部分?
例如,我们有一个由 10 个整数组成的数组。我们可以创建一个新数组,并将最后 5 个整数复制到其中吗?
是否有其他可用于 c/c++ 的内存/数组复制/操作工具?
【问题讨论】:
-
在 C++ 中编写代码时,您几乎肯定希望使用
std::vector而不是数组(除非您有充分的理由想要一个大小在编译时固定的容器,在这种情况下你应该使用std::array而不是内置数组)。 -
原始内存正是我为此目的所需要的:执行时间紧迫,必须快速。 std::vector 是不够的。 (或者至少我认为它会更慢。)
-
@EdwardBird:您认为它会更慢,但 vector 的性能可能会让您大吃一惊。至少在完全忽略 STL 之前执行计时指标。
-
std::vector会尽可能快,前提是你使用得当。 -
在尝试改进低级操作之前,请查看my favorite example 的编译器优化(我自己写的 :-)。编译器会为你做这件事。在我的示例中,10 行 C++ 模板代码变成了 4-5 条机器指令,并在纳秒内执行。