そのため、配列を初期化するときに、複数の値を1つの場所に割り当てることができます。
int array [] = {1,3,34,5,6}
しかし、配列が既に初期化されていて、その配列の要素の値を1行で完全に置き換えたい場合
そう
int array [] = {1,3,34,5,6}
array [] = {34,2,4,5,6}
動作しないようです...
そうする方法はありますか?
初期化と割り当てには違いがあります。あなたがしたいことは、初期化ではなく、割り当てです。しかし、配列へのそのような割り当てはC++では不可能です。
できることは次のとおりです。
#include <algorithm>
int array [] = {1,3,34,5,6};
int newarr [] = {34,2,4,5,6};
std::copy(newarr, newarr + 5, array);
ただし、C++ 0xではこれを行うことができます。
std::vector<int> array = {1,3,34,5,6};
array = {34,2,4,5,6};
もちろん、std::vector
生の配列の代わりに。
Forループなどで値を1つずつ置き換えるか、memcpy(..)
またはstd::copy
を使用するなど、別の配列を別の配列にコピーする必要があります。
例えば.
for (int i = 0; i < arrayLength; i++) {
array[i] = newValue[i];
}
適切な境界チェックと、境界外の問題を防ぐために必要なその他のチェックを確実に行うように注意してください。
const static int newvals[] = {34,2,4,5,6};
std::copy(newvals, newvals+sizeof(newvals)/sizeof(newvals[0]), array);