728x90
STL : 표준 템플릿 라이브러리; Standard Template Library
사용하려면 #include <vector>가 필요하다.
C++에서는 동적 배열 구조를 vector로 구현할 수 있다.
vector<string> vec, vector<int> vec처럼 선언해주면 자동으로 배열의 크기 조절과 객체의 추가, 삭제가 가능하다. 단, 한번에 한 타입만 저장이 가능하다.
요소에 접근하거나, 앞 or 뒤에 요소를 추가/삭제하거나, 크기를 알 수 있는 멤버 함수 등을 제공한다.
다음은 vector를 이용해 문자열을 추가, 삭제해 각각 출력하는 코드다.
#include <iostream>
#include <string>
#include <vector> // vector 헤더파일 추가
using namespace std;
int main() {
vector<string> vec; // 비어있는 벡터 생성
vec.push_back("벡터는 ");
vec.push_back("이렇게 ");
vec.push_back("씁니다.");
for (int i = 0; i < vec.size(); i++) {
cout << vec[i] << endl; // vec.at(i)도 가능
}
vec.pop_back(); // 맨 뒤에 원소 제거
cout << "\n";
for (int i = 0; i < vec.size(); i++) {
cout << vec.at(i) << endl;
}
return 0;
}
vector의 메소드와 사용방법은 다음과 같다.
메소드 | 설명 |
at | 특정 위치 원소의 참조를 반환 vec.at(1) == vec[1] 이다. |
push_back / pop_back | 마지막에 원소를 추가 / 삭제 |
insert | 특정 위치에 원소 삽입 <사용 예시> v.insert(v.begin()+1, "hi"); //처음 원소 다음에 hi 삽입 |
front / back | 첫번째 / 마지막 원소의 참조를 반환 |
begin / end | 첫번째 원소의 랜덤 접근 반복자를 반환 / 마지막 원소 다음의 반복자를 반환 for문에서 초기조건, 종료조건처럼 쓰인다. <사용 예시> vector<string>::iterator vi; for(vi = vec.begin(); vi != vec.end(); vi++) cout << *vi << endl; // vec 배열 원소 차례로 반환 |
rbegin / rend | 역방향으로 첫 원소의 반복자를 반환 / 역방향으로 마지막 원소 다음의 반복자를 반환 <사용 예시> vector<string>::reverese_iterator vi; for(vi = vec.rbegin(); vi != vec.rend(); vi++) ... |
assign | 특정 원소로 채움(이전 데이터는 저장하지 않음) 초기화 용도 |
reserve | 지정된 크기의 저장 공간을 확보 v.reserve(100); //100칸 확보 |
size | 원소 개수 반환 <사용 예시> vector<string>::size_type cnt; cnt = v.size(); |
clear | 모든 원소를 삭제 |
erase | 특정 위치의 원소나 지정 범위의 원소를 삭제 (매개변수는 iterator) <사용예시> v.erase(v.begin(), v.end()); //clear와 똑같이 동작 |
swap | 각 벡터의 원소(들)를 서로 바꾼다. |
'[C_C++]이론 공부 > 이론+STL' 카테고리의 다른 글
[C++ STL] set 사용법 위주 공부 (0) | 2021.06.29 |
---|---|
[C++] 클래스(class) 기본 (0) | 2021.06.01 |
OOP(객체지향 프로그래밍)의 주요특징 (0) | 2021.05.21 |
[C++] 데이터 타입(자료형) (0) | 2021.05.20 |
[C++] 메모리 영역 (메모리 구조), 정적할당과 동적할당 (0) | 2021.05.20 |