如何在 C++ 中做到这一点?
最简单的解决方案是std::copy
按照其他人所说的那样使用。不要在 C++ 中使用,对于 POD 也是如此,但也适用于非 POD,只是做正确的事。如果您的数组中的类型有一天发生了变化,您将不得不重新访问您进行此类复制的所有地方并替换. (而且你会错过其中一个地方并且很难找到错误)。在 C++ 中使用没有任何好处,所以从一开始就使用。memcpy
std::copy
memcpy
memcpy
std::copy
更好的解决方案是使用 C++ 数据结构,在这种情况下,使用std::array
#include <array>
struct sample {
int x;
int y;
std::array<int, 10> arr; //C++ array instead of plain C array
};
int main()
{
std::array<int, 10> arr2 = {0, 1, 2, 4, 3, 2, 2, 1, 5, 5};
int a = 19;
int b = 22;
// 1: no need to say "struct sample*" since C++98
// 2: prefer to use smart pointers..
//sample* samp = new sample;
std::unique_ptr<sample> samp(new sample());
samp->x = a;
samp->y = b;
samp->arr = arr2; //it's as easy as it should be!
// 3: ... so ypu can't forget to delete!
//delete samp;
}
编辑:
我在这里使用了 unique_ptr,尽管在这个小例子中你根本不需要使用堆分配。还要引入 Grijesh 的初始化:
int main()
{
std::array<int, 10> arr2 = {0, 1, 2, 4, 3, 2, 2, 1, 5, 5};
int a = 19;
int b = 22;
sample samp = {a, b, arr2}; //done!
}
无需分配,无需清理,无需按元素分配。