임베디드 쪽 개발하는 현업에서 뛰다 보니 STL을 쓰지 않고 필요 기능만 구현해서 쓴다.
이직을 준비중인데 STL 사용법들이 잘기억나지 않아 복기 겸 정리해보고자 한다.
기본 동작
vector<int> v;
vector<int> v(5); // 초기화 0, 5칸
vector<int> v(5, 1); // 초기화 1, 5칸
v.push_back(1); // 마지막에 삽입
v.pop_back(); // 마지막 원소 제거
v.clear(); // 모두 제거
v.insert(1,2,3); // 1번째 위치에 3값을 2개 삽입
v.insert(1,2); // 1번째 위치에 2값을 삽입
v.erase(iter); // iter가 가르키는 놈을 삭제
v.erase(iter1, iter2); // iter1부터 iter2가 까지 범위 삭제
v.empty(); // vector 가 비어있는지 확인
v.size(); // vector 벡터의 사이즈 리턴
v.front(); // 첫번째 원소
v.back(); // 마지막 원소
v.begin(); // 첫번째 iterator
v.end(); // 마지막 iterator
v.rbegin(); // 리버스 첫번째 iterator
v.rend(); // 리버스 첫번째 iterator
v.reserve(10); // 10칸을 할당(사이즈와 다름 메모리 확보)
v.resize(10); // 크기를 10으로 변경, 커질경우 초기화 0
v.resize(10, 1); // 크기를 10으로 변경, 커질경우 초기화 1
복사
// 전체 복사 1
vector_to.resize(vector_from.size());
copy(vector_from.begin(), vector_from.end(), vector_to.begin());
// 부분 복사 1
vector_to.resize(vector_from.size());
copy(vector_from.begin() + 1, vector_from.begin() + 3, vector_to.begin());
// 전체 복사 2
vector_to.clear()
vector_to.assign(vector_from.begin(), vector_from.end());
// 부분 복사 2
vector_to.clear()
vector_to.assign(vector_from.begin() + 1, vector_from.begin() + 3);
정렬
// 오름차순 정렬
sort(v.begin(), v.end()); // == sort(v.begin(), v.end(), less<int>() );
// 내림차순 정렬
sort(v.begin(), v.end(), greater<int>() );
// 구조체 a값 기준 오름차순 정렬 - 람다 함수
sort(vv.begin(), vv.end(), [](const auto& lhs, const auto& rhs) {return lhs.a < rhs.a; });
// 구조체 a값 기준 내림차순 정렬 - 람다 함수
sort(vv.begin(), vv.end(), [](const auto& lhs, const auto& rhs) {return lhs.a > rhs.a; });
// 구조체 a값 기준 오름차순 정렬 - cmp 함수
typedef struct str {int a, b;}str;
bool cmp(const str& lhs, const str& rhs)
{
return lhs.a < rhs.a;
}
sort(v.begin(), v.end(), cmp);
// 구조체 a값 기준 내림차순 정렬 - cmp 함수
bool cmp(const str& lhs, const str& rhs)
{
return lhs.a > rhs.a;
}
sort(v.begin(), v.end(), cmp);
역순
reverse(v.begin(), v.end());
필요기능이 더 생기면 차차 추가할 예정
'Programming > C | C++' 카테고리의 다른 글
OpenMP(2) - 입문자용 주요 사용법 간단한 설명/정리(omp single, master, task, taskwait, barrier) (2) | 2020.07.31 |
---|---|
OpenMP(1) - 입문자용 주요 사용법 간단한 설명/정리(omp parallel, for, atomic,critical) (3) | 2020.07.24 |
댓글