2014-03-12 3 views
0

다른 배열로 복사하여 1 위치만큼 이동하려는 요소 배열이 있습니다. 이렇게 뭔가 :std :: vector 요소 옮기기 및 복사

void Blubb(){ 

    std::vector<double> array1(n); 
    std::vector<double> array2(n+1); 

    while(//a condition){ 
    //do some stuff 

     for(int i = 0; i < (n+1); i ++){ 

      array1[i] = array2[i+1]; 

     } 

     //do some more stuff 
    } 
} 

배열 2의 첫 번째 요소는 의도적으로 array1의 일부가 아닙니다.

이렇게 쉽게 할 수있는 방법이 있습니까? 컨테이너 클래스는 이미 비슷한 것을 제공합니까? 아니면 내가 시도해야 할 다른 수업이 있습니까?

답변

1

std :: vector에 대한 템플릿 인수를 잊어 버린 것 같습니다.

std::vector<int> array2(n+1); 
std::vector<int> array1(array2.begin()+1, array2.end()); 
+0

나는 한 번 이상 일어날 필요가 있다고 덧붙였다. 실제로는 반복 계산의 일부입니다. for 루프 주위에 루프가 있다고 가정하십시오.) – FreddyKay

+1

이 경우 assign : array1.assign (array2.begin() + 1, array2.end())를 사용하십시오. –

0

는 첫째, 템플릿 인수를 필요 : 어쨌든, 뭔가를하려고 사용하고있는 중 유형 int를 대체 std::vector<int>std::vector의 모든 항목을 대체합니다. 첫 번째 사본 벡터 :

std::vector<int> array2(n+1); 
// fill the vector 
std::vector<int> array1(array2); 

(즉 배열 2 주 먼저 선언해야합니다.)

둘째, 첫 번째 요소 삭제 :이 도움이

array1.erase(array1.begin()); 

희망을!

+0

방금 ​​편집했습니다. 선언 밖에서 그런 종류의 일을 할 수 있습니까? 그리고 참으로 나는 인수를 잊어 버렸습니다 – FreddyKay

+0

선언의 바깥 쪽 벡터의 첫 번째 요소를 제거 할 수 있는지 묻는다면, 그렇습니다. – Alex