Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 고급매핑
- Python
- 20055
- 객체 지향 설계와 스프링
- 자바 ORM 표준 JPA 프로그래밍 7장
- 백준 13460 Python
- 스프링 핵심 원리
- 코틸린인액션
- 스프링 컨테이너와 스프링 빈
- 코틀린인액션
- 스프링 핵심 원리 이해
- 백준 20055 컨베이어 벨트 위의 로봇
- Kotlin in action 5장
- 스프링 핵심 원리 - 기본편
- kotlin in action 정리
- 7장 고급매핑
- KotlinInAction
- Kotlin in action 3장
- spring
- 기능개발 python
- 13460 구슬탈출 2
- Kotlin in action 6장
- 코틀린
- 20055 컨베이어 벨트 위의 로봇
- Kotlin In Action
- 싱글톤 컨테이너
- Kotlin
- Kotlin in action 10장
- 백준
- 컨베이어 벨트 위의 로봇 Python
Archives
- Today
- Total
기록하는 습관
[C++] STL 정리 본문
STL(Standard Template Library)
: C++의 템플릿을 사용하여 표준으로 정리된 라이브러리
컨테이너(Container)
: 컨테이너란 기본 자료형과 유저가 정의한 자료형을 담는 일종의 자료구조
- 간단한 컨테이너 : pair
- 시퀀스 컨테이너 : vector, list, deque ...
- 연관 컨테이너 : set, map, multiset, multimap ...
- 어댑터 컨테이너 : queue, priority queue, stack ...
1. vector
: 자동으로 메모리가 할당되는 동적배열로서, end에 요소를 삽입하는 연산은 상수 시간을 필요로 한다.
중간에 값을 삽입, 삭제 할 수 있지만 빈번해지면 비효율적이다.
생성자와 연산자
- vector<int> v; // 빈 벡터 생성
- vector<int> v(3); // 0으로 초기화 된 3개의 원소를 가지는 벡터 생성
- vector<int> v(3,1); // 1로 초기화 된 3개의 원소를 가지는 벡터 생성
- vector<int> v2(v); // v 벡터를 복사하여 v2 생성
멤버함수
- v.assign(3,1); // 1의 값으로 3개의 원소 할당
- v[idx]; // idx 번째 원소 참조
- v.front();
- v.back();
- v.clear(); // 모든 원소 제거하지만 메모리는 그대로 남아있다.
- v.push_back(1);
- v.pop_back();
- v.begin();
- v.end();
- v.reserve(n);
- v.resize(n);
- v.size();
- v.capacity();
- v.insert(1,2); // 1번째 위치에 2값 삽입
- v.insert(1,2,3); // 1번째 위치에 2개의 3값을 삽입
- v.erase(iter); // iter가 가리키는 원소 제거
- v.empty();
정렬(sort)
- sort(v.begin(), v.end());
- sort(v.begin(), v.end(), greater<int>()); // <functional> 헤더파일 필요
1-1. pair
vector 안에 pair 을 사용하여 second를 기준으로 정렬할 때 쓰는 함수
// second 기준으로 sort
bool sortby2(const pair<int, int> &a, const pair<int, int> &b) {
if (a.second != b.second) {
return a.second < b.second; }
else { return a.first < b.first; }
}
2. stack
- stack<int> st;
- st.push(1);
- st.pop();
- st.top(); // 맨 위 원소 값 출력
- st.empty();
- st.size();
3. queue
- queue<int> q;
- q.push(1);
- q.pop();
- q.front(); // 맨 앞 원소 값 출력
- q.empty();
- q.size();
4. deque
- deque<int> dq;
- dq.push_front(1);
- dq.push_back(2);
- dq.pop_front();
- dq.opo_back();
5. set
- set<int> s;
- s.insert(10);
- s.find(10); // 10값을 가지는 원소를 찾기
6. tuple
: 순서가 있는 두 개 이상의 서로 다른 정렬된 값들의 모임.
반환값이 두 개 이상일 경우에 사용하면 효율적이다.
- tuple<int, string, int> t1 = make_tuple(1, "플렉시뉴", 001);
- get<0>(t1) // 1
- get<1>(t1) // 플렉시뉴
- get<2>(t1) = 002 // 001 -> 002 로 변경
관련 문제
'알고리즘 > [개념] C++' 카테고리의 다른 글
[c++] 여러개의 숫자 한줄로 받아 따로 저장하기 (0) | 2020.05.08 |
---|---|
[C++] memset (0) | 2020.01.21 |
[C++] Range-based for statement (0) | 2020.01.08 |
[C++] 순열과 조합 (0) | 2020.01.07 |
[C++] vector & deque (0) | 2020.01.05 |
Comments