↓[C++] 벡터(vector)와 메소드들(push_back, front, back, begin, end, swap, size, empty) 바로가기
https://swblossom.tistory.com/26
벡터에 insert 메소드가 있다. insert 메소드는 다른 벡터의 범위 값을 삽입할 때 사용한다.
예를 들어 v라는 벡터에 다른 벡터의 값을 추가하고 싶다면 추가하고 싶은 위치와 추가할 벡터의 시작 위치와 마지막 위치를 넣어주면 된다.
v.insert(v의 시작위치, 추가할 벡터의 시작위치, 추가할 벡터의 마지막위치);
erase메소드는 insert 메서드와 반대 기능을 한다. 벡터에서 범위 삭제를 할 때 사용한다.
v.erase(삭제를 시작할 위치, 삭제할 마지막 위치);
STL에서 범위는 두 이터레이터에 의해 정의되는데 [it1, it2)로 정의된다. it1은 포함하고 it2는 포함하지 않는다.(it2 바로 앞)
#include <stdio.h>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
vector<int> v1, v2;
v1.push_back(1);
v1.push_back(2);
v1.push_back(3);
v2.push_back(4);
v2.push_back(5);
v2.push_back(6);
//v2에 v1삽입
v2.insert(v2.begin(), v1.begin(), v1.end());
//출력
for(int i=0;i<v2.size();++i) printf("%d ", v2[i]);
printf("\n");
//v2의 [2], [3] 삭제
v2.erase(v2.begin()+2, v2.begin()+4);
//출력
for(int i=0;i<v2.size();++i) printf("%d ", v2[i]);
return 0;
}
결과값:
1 2 3 4 5 6
1 2 5 6
binary_search는 algorithm헤더 파일에 있습니다. 정렬되어 있는 배열, 컨테이너 등을 탐색하여 원하는 값이 있는지 여부를 확인하고 1과 0을 반환해 줍니다.
binary_search(v.begin(), v.end(), 찾고자하는 값)
주로 배열이나 벡터의 전체를 탐색할 것입니다.
lower_bound는 범위 내에서 value보다 작지 않은(크거나 같은) 첫 번째 요소를 가리키는 iterator를 반환합니다.
upper_bound는 범위내에서 value보다 큰 첫번째 요소를 가리키는 iterator를 반환합니다.
#include <stdio.h>
#include <algorithm>
#include <vector>
#include <iostream>
using namespace std;
int main() {
vector<int> v1;
v1.push_back(1);
v1.push_back(2);
v1.push_back(3);
v1.push_back(4);
v1.push_back(5);
v1.push_back(6);
cout << binary_search(v1.begin(), v1.end(), 6) << endl;
cout << binary_search(v1.begin(), v1.end(), 7) << endl;
vector<int>::iterator it;
it = lower_bound(v1.begin(), v1.end(), 3);
cout << "lower_bound(6) : " << *it << endl;
it = upper_bound(v1.begin(), v1.end(), 5);
cout << "upper_bound(5) : " << *it << endl;
return 0;
}
결과값:
1
0
lower_bound(6) : 3
upper_bound(5) : 6
1, 2, 3, 4, 5, 6의 배열에서
lower_bound(3)은 3보다 크거나 같은 3을 반환하였고 upper_bound(5)는 5보다 큰 첫 번째 요소인 6을 반환하였습니다.
'C++' 카테고리의 다른 글
[C++] sort 함수로 정수, 문자열 오름차순 내림차순 정렬하기 (0) | 2020.01.14 |
---|---|
[C++] 스택 풀기(Stack unwinding) (0) | 2020.01.02 |
[C++] 예외 처리(try, throw, catch) (0) | 2020.01.01 |
[C++] 스마트 포인터 - shared_ptr과 unique_ptr (0) | 2019.12.31 |
[C++] 스마트 포인터 - auto_ptr (0) | 2019.12.31 |