#include <vector>
1. 생성 및 초기화
// 1차원
vector<int> vec;
vector<int> vec(10); // 원소 10개를 0으로 초기화(0, 0, ...)
vector<int> vec(10, 1); // 원소 10개를 3으로 초기화(1, 1, ...)
vector<int> vec[10]; // 크기 10인 벡터 생성
vector<int> vec2(vec); // 벡터 vec을 복사하여 vec2 생성
vector<int> vec2(vec.begin(), vec.end()+1); // 벡터 vec의 일부를 복사하여 vec2 생성
// 2차원
vector<vector<int>> vec;
vector<vector<int>> vec(2, vector<int>(5, 1)); // 1으로 초기화된 크기 5의 벡터를 2개 생성
/*
1 1 1 1 1
1 1 1 1 1
*/
2. 원소 추가 / 제거
vec.push_back(1); // 원소 추가
vec.insert(iter, 2); // 원하는 위치에 추가
// 원하는 위치에 벡터를 추가
vector<int> vec2(2, 400);
vec.insert(iter, vec2.begin(), vec2.end());
/*
erase : vector 의 요소를 삭제
remove : vector 의 요소를 이동시킬뿐 요소를 삭제하지 않음
*/
vec.pop_back(); // 마지막 원소 삭제
vec.erase(vec.begin() + i); // i번째 특정 위치 요소 제거
vec.erase(remove(vec.begin(), vec.end(), 1), vec.end()); // 1이라는 원소를 이동시키고, 1 원소를 삭제
//remove_if 예시
bool isEven(int num) {
return num % 2 == 0;
}
vec.erase(remove_if(vec.begin(), vec.end(), isEven), vec.end());
3. 접근
vec[0][0]; // 직접 접근 - 범위 체크X
vec.at(0).at(0); // 간접 접근 - 범위 체크O
auto iter = vec.begin(); // 반복자
for(auto iter : vec){ // 벡터 순회하며 출력
cout << iter << endl;
}
4. 값 채우기 및 재조정
#include <algorithm>
fill(vec.begin(), vec.end(), 1); //전체를 1로 채움
vec.reserve(100); //벡터 크기(메모리) 변경. 즉, 할당된 남은 공간보다 들어온 크기가 크면 원소가 전부 invalidate됨
vec.resize(100); //벡터 사이즈 변경. 즉, size가 100이 되도록 늘림
vector<int>().swap(vec); //벡터 초기화(메모리도)
5. 정렬
#include <algorithm>
sort(vec.begin(), vec.end()); //오름차순 정렬 1, 3, 5
sort(vec.begin(), vec.end(), greater<>()); //내림차순 정렬 5, 3, 1
bool compare(int a, int b) { //커스텀 함수(오름차순)
return a < b;
}
sort(vec.begin(), vec.end(), comapre);
6. 중복값 제거
#include <algorithm>
sort(vec.begin(), vec.end()); // (1)먼저 정렬한다
vec.erase(unique(vec.begin(),vec.end()), vec.end()); // (2)unique:중복 지점부터 끝까지 중복된 값을 삭제
'⚖️Algorithm > ⚙️C++' 카테고리의 다른 글
[c++] string (0) | 2022.05.01 |
---|