web-dev-qa-db-ja.com

複数の値のc ++配列の割り当て

そのため、配列を初期化するときに、複数の値を1つの場所に割り当てることができます。

int array [] = {1,3,34,5,6}

しかし、配列が既に初期化されていて、その配列の要素の値を1行で完全に置き換えたい場合

そう

int array [] = {1,3,34,5,6}
array [] = {34,2,4,5,6}

動作しないようです...

そうする方法はありますか?

57
kamikaze_pilot

初期化割り当てには違いがあります。あなたがしたいことは、初期化ではなく、割り当てです。しかし、配列へのそのような割り当ては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生の配列の代わりに。

51
Nawaz

Forループなどで値を1つずつ置き換えるか、memcpy(..)またはstd::copyを使用するなど、別の配列を別の配列にコピーする必要があります。

例えば.

for (int i = 0; i < arrayLength; i++) {
    array[i] = newValue[i];
}

適切な境界チェックと、境界外の問題を防ぐために必要なその他のチェックを確実に行うように注意してください。

6
user195488
const static int newvals[] = {34,2,4,5,6};

std::copy(newvals, newvals+sizeof(newvals)/sizeof(newvals[0]), array);
1
sehe