의 배열 할당은 그래서, 당신은 한 자리에서 여러 값을 지정할 수 있습니다 :C++ 여러 값
int array [] = {1,3,34,5,6}
하지만 배열은 이미 초기화와 나는 완전히 값을 대체 할 경우 한 줄에 해당 배열의 요소의
그렇게
int array [] = {1,3,34,5,6}
array [] = {34,2,4,5,6}
은 ... 작동하지 않는 것
이렇게 할 수있는 방법이 있습니까?
의 배열 할당은 그래서, 당신은 한 자리에서 여러 값을 지정할 수 있습니다 :C++ 여러 값
int array [] = {1,3,34,5,6}
하지만 배열은 이미 초기화와 나는 완전히 값을 대체 할 경우 한 줄에 해당 배열의 요소의
그렇게
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
를 사용하도록 선택하는 경우 원시 배열 대신. 온라인 데모에
는 다음과 같은 방법으로 하나의 값을 교체해야 하나 이러한 에서처럼위한 루프 또는 예컨대 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);
링크 –
'표준 : : 사본 작동하지 않습니다 (표준 : : 시작 (newarr), 표준 : 끝 (newarr을), STD는 ::() 배열을 시작),'더 나은 것 , 그렇지? –
@MattCruikshank : 예. 그러나 그것은 C++ 03에서는 불가능했습니다. – Nawaz