program story

벡터의 특정 위치에 요소 삽입

inputbox 2021. 1. 11. 08:05
반응형

벡터의 특정 위치에 요소 삽입


벡터의 특정 위치에 요소를 삽입하고 싶습니다. 할당 만 사용할 수 있습니다.

// vec1 and 2 have the same length & filled in somehow
vec1;
vec2;

vec1[i] = vec2[i] // insert vec2[i] at position i of vec1

또는 insert ()를 사용해야합니다.

vector<sometype>::iterator iterator = vec1.begin();

vec1.insert(iterator+(i+1), vec2[i]);

vec1[i] = vec2[i]

의 값을 설정합니다 vec1[i]의 값을 vec2[i]. 아무것도 삽입되지 않았습니다. 두 번째 접근 방식은 거의 정확합니다. +i+1당신 대신에+i

v1.insert(v1.begin()+i, v2[i])

다음을 사용하여 그렇게 할 수 있습니다 에서 . 다음과 같은 간단한 예를 시도해 볼 수 있습니다.

const size_t N = 20;
std::vector<int> vec(N);
try {
    vec.at(N - 1) = 7;
} catch (std::out_of_range ex) {
    std::cout << ex.what() << std::endl;
}
assert(vec.at(N - 1) == 7);

메서드가를 at반환합니다. 즉 allocator_type::reference,이 경우 int&. 를 사용 at하는 것은와 같은 값을 할당하는 것과 같습니다 vec[i]=....


다음 예에서 이해할 수있는 것처럼 at삽입 에는 차이가 있습니다.

const size_t N = 8;
std::vector<int> vec(N);
for (size_t i = 0; i<5; i++){
    vec[i] = i + 1;
}

vec.insert(vec.begin()+2, 10);

이제 인쇄하면 vec다음을 얻을 수 있습니다.

1 2 10 3 4 5 0 0 0

대신에 vec.at(2) = 10, 또는 vec[2]=10을 수행하면

1 2 10 4 5 0 0 0

여기에서 예를 참조하십시오 : http://www.cplusplus.com/reference/stl/vector/insert/ 예 :



...
vector::iterator iterator1;

  iterator1= vec1.begin();
  vec1.insert ( iterator1+i , vec2[i] );

// This means that at position "i" from the beginning it will insert the value from vec2 from position i

첫 번째 방법은 vec1 [i]의 값을 vec2 [i]의 값으로 바꾸는 것이 었습니다.

참조 URL : https://stackoverflow.com/questions/6726805/insert-an-element-into-a-specific-position-of-a-vector

반응형