728x90
Vector
- 일반적인 dynamic array와 비슷하게 사용 가능하다.
- push_back : 맨 마지막 위치에 원소를 삽입
- pop_back : 맨 마지막 위치의 원소를 삭제
- 위의 두 연산을 평균 O(1)시간에 수행 가능.
- insert : 원하는 위치에 element를 삽입 O(n)시간 소모.
#include <vector> // 헤더파일 스윽 써주께에
vector<int> v;
v.push_back(3); // v : [3]
v.push_back(2); // v : [3, 2]
v.push_back(5); // v : [3, 2, 5]
vector<int> a(8) // size : 8, initial value == 0
vector<int> b(8,2) // size : 8, initial value == 2
# Vector 에 있는 모든 원소 순회 / 반복문 사용
for(int i=0;i<v.size();i++){
cout << v[i] << '\n';
}
for(auto x : v){
cout << v[i] << '\n';
}
# Vector 에 있는 모든 원소 순회 / iterator 사용
- C++에는 iterator라는 자료구조의 element를 가리키는 변수가 존재한다.
- 보통 begin와 end를 많이 사용
- begin : 첫번째 원소
- end : 마지막 원소의 다음 element == 자료구조 밖
- 보통 begin와 end를 많이 사용
// 정렬 뒤 vector를 뒤집은 다음 무작위로 섞음
sort(v.begin(), v.end());
reserve(v.begin(),v.end());
random_shuffle(v.begin(),v.end());
//vector의 첫번째 원소 출력
cout << *v.begin() << "\n";
//vector에서 중복된 원소들을 모두 제거
sort(v.begin(),v.end());
v.erase(unique(v.begin(),v.end()),v.end());
# unique(v.begin(), v.end())
- 헤더파일 <algorithm>
- vector의 배열에서 중복되지 않은 원소들을 앞에서부터 채워나가는 함수
- 중복되지 않은 원소들을 앞에서부터 채워나가는 역할을 하기 때문에 남은 뒷부분은 그대로 vetor 원소값이 존재한다.
# v.erase(v.begin()+s, v.begin()+e)
- vector에서 특정 원소를 삭제하는 함수
- [s,e)원소가 삭제된다. == 시작 지점은 닫힌 구간, 끝나는 지점은 열린 구간으로 삭제된다.
자주 사용하는 모습
v.erase(unique(v.begin(),v.end()),v.end());
- 몇개가 중복되고 몇개의 원소가 줄어든지를 알 수 없기 때문에 erase함수와 함께 사용하여 뒷부분의 필요 없는 값들을 삭제한다.
728x90
'🐣 알고리즘 삐약 > ✌️알고리즘 개념 잡기' 카테고리의 다른 글
[Linear Data Structures] Stack / Queue (0) | 2022.04.20 |
---|---|
[Linear Data Structures] Deque (3) | 2022.04.20 |
[sorting | practice] Inversion 개수 출력 (0) | 2022.04.19 |
[sorting] 삽입 정렬 | Insertion Sort (0) | 2022.04.19 |
[sorting] 선택 정렬 | Selection Sort (0) | 2022.04.19 |