массив массива c ++ для нескольких значений - PullRequest
55 голосов
/ 20 апреля 2011

поэтому, когда вы инициализируете массив, вы можете присвоить ему несколько значений в одном месте:

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

, но что если массив уже инициализирован, и я хочу полностью заменить значения элементов вэтот массив в одну строку

, поэтому

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

, похоже, не работает ...

есть ли способ сделать это?

Ответы [ 3 ]

50 голосов
/ 20 апреля 2011

Существует разница между инициализацией и назначением .То, что вы хотите сделать, это не инициализация, а назначение.Но такое присвоение массиву невозможно в 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 вместо необработанного массива.

6 голосов
/ 20 апреля 2011

Вы должны заменить значения одно за другим, например, в цикле for или скопировать другой массив поверх другого, например, используя memcpy(..) или std::copy

, например,

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

Позаботьтесь о том, чтобы обеспечить надлежащую проверку границ и любую другую проверку, которая должна выполняться для предотвращения проблемы вне границ.

1 голос
/ 20 апреля 2011
const static int newvals[] = {34,2,4,5,6};

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