2011-04-20 4 views
49

의 배열 할당은 그래서, 당신은 한 자리에서 여러 값을 지정할 수 있습니다 :C++ 여러 값

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

하지만 배열은 이미 초기화와 나는 완전히 값을 대체 할 경우 한 줄에 해당 배열의 요소의

그렇게

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

은 ... 작동하지 않는 것

이렇게 할 수있는 방법이 있습니까?

답변

41

초기화지정 사이에 차이가 있습니다. 당신이 원하는 것은 초기화가 아니라 할당입니다. 그러나 배열에 이러한 할당은 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를 사용하도록 선택하는 경우 원시 배열 대신. 온라인 데모에

+1

링크 –

+2

'표준 : : 사본 작동하지 않습니다 (표준 : : 시작 (newarr), 표준 : 끝 (newarr을), STD는 ::() 배열을 시작),'더 나은 것 , 그렇지? –

+0

@MattCruikshank : 예. 그러나 그것은 C++ 03에서는 불가능했습니다. – Nawaz

6

는 다음과 같은 방법으로 하나의 값을 교체해야 하나 이러한 에서처럼위한 루프 또는 예컨대 memcpy(..) 또는 std::copy

를 사용하는 것과 같은 서로 다른 배열 위에 복사

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

범위 초과 문제를 방지하려면 올바른 경계 검사 및 기타 검사가 수행되도록주의하십시오.

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

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