**생능출판사의 C++ Programming을 공부한 내용입니다.
STL이란?
C++에서 제공하는 표준 템플릿 라이브러리
템플릿으로 작성된 많은 제네릭 클레스와 함수 라이브러리
STL의 구성요소
1. container: 템플릿 클래스, 데이터를 담아두는 자료구조를 구현한 클래스
ex) 리스트, 큐, 스택, 맵, 셋, 백터 등
2. iterator: 컨테이너 원소에 대한 포인터, 반복자라고 불림, 여러 타입의 iterator가 있음
3. 알고리즘: 컨테이너의 원소에 대한 복사, 검색, 삭제, 정렬 등의 기능을 구현한 템플릿 함수
Vector란?
가변 길이 배열을 구현한 제네릭 클래스
스스로 내부 크기를 조절
시작 인덱스 0
Vector 사용법
- vector객체 생성
vector<int> v;
- vector에 원소 삽입: push_back()멤버 함수를 이용, 벡터의 맨 마지막에 값을 삽입
v.push_back(1);
v.push_back(2);
v.push_back(3);
-> 벡터에 1 2 3 이 순서대로 저장
- vector 원소 값 읽고 변경하기
v.at(2) = 5; //v의 3번째 값을 5로 변경한다.
int n = v.at(1); //n은 v의 2번째 값을 가짐
- vector를 배열처럼 사용하기
v[2] = 5;
int n = v[2];
위와 동일하지만 다른 방식으로 쓸 수 있다.
- vector의 원소 개수 알아내기
v.size()
- vector의 원소 삭제: erase() & iterater를 함께 사용
vector<int>::iterator it; //int형 벡터를 가리키는 포인터 it
it =. v.begin(); //it는 v의 첫번째 원소를 가리킨다.
it = v.erase(it); //v에서 가리키고 있던 첫번째 원소를 삭제 한다.
erase(it)는 it는 it가 가리키는 원소를 삭제 한 후, 벡터의 원소들을 다시 앞으로 한 자리씩 이동시키고
삭제된 다음 원소를 가리키는 포인터를 리턴함으로 it가 리턴값으로 바뀌어야 한다.
-> 1 2 3 중 1을 삭제하면 2 3이 되고 it는 1을 가리키다가 2를 가리킴
iterator 사용법
vector<int>::iterator it;
vector<int> v;
it = v.begin() //v의 첫번째 원소에 대한 주소를 it에 저장
it++; //벡터의 다음 원소를 가리킴
int n = *it; //it가 가리키는 원소의 값을 n에 읽어온다.
*it = 5; //it가 가리키는 원소에 5를 쓴다.
it = v.end(); //마지막 다음 위치에 대한 포인터를 저장
v. end() 는 마지막 원소 다음 위치의 주소
- 벡터의 모든 원소에 접근하기
for ( it = v.begin(); it != v.end(); It++ ) {
int n = *it;
cout<<n<<endl;
}
'알고리즘' 카테고리의 다른 글
18. 층간소음 (0) | 2020.04.17 |
---|---|
13. 가장 많이 사용된 자릿수 (0) | 2020.04.03 |
[2440/2441] 별찍기 3-4 (0) | 2018.05.11 |
[2438/2439] 별찍기 1-2 (0) | 2018.05.11 |
[1152] 단어의 개수 (0) | 2018.05.09 |