C ++でそれを行う方法??
最も簡単な解決策はstd::copy
、他の人が言ったように使用することです。C++ では使用しないでください。POD の場合も同様ですが、非 POD にも適用され、正しいことを実行するだけです。ある日、配列の型が変更された場合、そのようなコピーを行ったすべての場所に再度アクセスして、. (そして、場所の 1 つを見逃して、バグを見つけるのに苦労することになります)。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!
}
割り当て、クリーンアップ、要素ごとの割り当ては必要ありません。