반응형
벡터의 특정 위치에 요소 삽입
벡터의 특정 위치에 요소를 삽입하고 싶습니다. 할당 만 사용할 수 있습니다.
// 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
반응형
'program story' 카테고리의 다른 글
정규식을 기반으로 호출 할 Python 함수 선택 (0) | 2021.01.11 |
---|---|
네임 스페이스 시스템에 'Forms'가 없습니다. (0) | 2021.01.11 |
jQuery를 사용하여 전체 페이지의 HTML을 어떻게 얻습니까? (0) | 2021.01.10 |
.htaccess는 SSL / HTTPS를 사용하여 www를 www가 아닌 사이트로 리디렉션합니다. (0) | 2021.01.10 |
자바 : Thread.interrupted ()와 Thread.isInterrupted ()의 사용법 차이? (0) | 2021.01.10 |