일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 아스키코드
- 마법이라고 불러도 좋을까?
- 아스키코드로 숫자 넣기
- 정수와 상수
- 백준 11720
- 魔法っていっていいかな
- body
- 히라이켄
- meta charset=
- 오버플로우
- 平井堅
- 異端なスター
- HEAD
- 백준 8958번
- 문자열숫자를 숫자로
- 십진수 8진수
- React.js
- ㅇ
- !doctype html
- html
- 십진수 16진수
- 자료형
- 백준4344번
- Official髭男dism
- Today
- Total
갓비니
C++ STL (Standard Template Library) 개념 본문
0. C++'s Standard Library
1) Entire C standard library
2) I/O stream library (std::cin / std::ciout / stringstreams / fstreams 등)
3) Standard Template Library
4) miscellaneous library (strings, exceptions, allocation 등...)
1. STL이란
STL : 자료구조와 Algoritm을 Template로 제공하는 라이브러리
자료구조를 내가 코딩해서 만들지 않아도 사용할 수 있게 해주는 라이브러리이다.
STL은 reference가 아닌 value를 저장한다.
STL을 사용하면 여러가지 copy를 만들게 된다. 만일 이를 원치 않을 경우 포인터를 이용한 wrapper object를 삽입하면 된다.
STL은 std namespace에 작성되어있기 때문에
무조건 using namespace std; 를 적어줘야한다!!!!!
2. 구성
1) container
다른 object를 저장하는 object로서,
종류에는 list, queue, stack, map, set, vector등이 있다.
i) Sequence containers : vector, deque, list 등 (연속적인 메모리공간에 값을 넣는 것! 인덱스 이용가능)
ii) Associative containers : set, map, multiset, multimap, bitset 등 (키를 이용하여 값을 저장/검색)
iii) Container Adaptors : stack, queue ( 다른 컨테이너를 상속받아 일부만 공개하여 제한)
2) iterator
포인터와 비슷. 컨테이너의 원소를 가리키는 기능.
container 내부 데이터를 순회할 수 있는 객체이다.
iterator : ++ (r/w)
const_iterator : ++ (r)
reverse_iterator : -- (r/w)
const_reverse_iterator : -- (r)
반복자에서 사용되는 연산자는
* 현재 위치의 원소 반환
++ 다음 원소의 위치로 반복자가 이동
-- 이전 원소의 위치로 반복자가 이동
= 반복자가 참조하는 원소의 위치를 다른반복자에게 준다.
== / != 두 반복자가 같은 위치를 가리키고 있는가?
3) algorithm
연산, 검색, 삭제, 정렬 등
4) function object
5) container adaptor
6) allocator
컨테이너의 메모리 할당을 담당
3. 사용
1) vector - 동적 배열을 이용한 배열
1
2
3
4
5
6
7
8
9
10
|
#include<vector>
using namespace std;
int main() {
string S;
vector<string> vec;
}
|
i) 생성 :
- vector<데이터형> 변수이름;
- vector<string> vec(5) 기본값 0으로 초기화된 5개의 원소를 가진 vector vec 생성
- vector<string> vec(5,2) 기본값 2로 초기화된 원소 5개를 가진 vector vec 생성
- vector<int> vec1(10,5); vector<int> vec1(vec2); --> vec1을 복사해서 생긴 vec2
ii) vector끼리는 연산자로 비교가 가능 . ==, != > < 등
iii)
- vec.assign(4,1) / 1의 값으로 4개의 원소에 할당해준다.
- vec.at(num) / num번째 원소를 가져온다. 범위를 넘어가면 예외를 내보냄
- vec[num] / num번째 원소를 가져옴. 하지만 점검없이 가져오므로 속도가 빠름
- vec.front() 첫번째 / vec.back() 마지막 / vec/clear() 모든 원소 제거 (메모리는 남아있음. capacity는 남아있다는 뜻)
- vec.push_back(10) 맨 마지막에 10 삽입
- vec.pop_back() 마지막 원소 삭제
'Programming > C++' 카테고리의 다른 글
C++ STL (Standard Template Library) - 이차원 vector (0) | 2020.07.04 |
---|---|
** C++ STL (Standard Template Library) - vector (가변길이의 배열) (0) | 2020.07.03 |
C++ Template : 템플릿, 제너릭 타입 (0) | 2020.07.03 |
string subscript out of range / C++ 에러 (0) | 2020.04.24 |
[C++ 복습]1. 기초 (cin, cout...) (0) | 2018.01.12 |