[STL] Vector Container

Seonghun Kim·2022년 7월 14일
0

C++!

목록 보기
3/10
post-thumbnail

📌 vector container

  • sequence container
  • 메모리가 자동으로 할당되도록 관리해주는 컨테이너
  • 마치 배열처럼 사용이 가능하며, 크기 조절, 값 추가 등 여러 기능들을 제공

✔ vector 사용

#include <vector>
using namespace std;
  • <vector> header
  • std::vector

✔ vector 생성

vector<[type]> [name]

// 비어있는 정수형 타입 vector인 v1를 생성
vector<int> v1;

// 기본값으로 초기화된 10개의 원소를 가지는 vector v2 생성
vector<int> v2(10);

// 'A'로 초기화된 5개의 원소를 가지는 vector v3 생성
vector<char> v3(5, 'A');

// 'A', 'B', 'C' 원소를 가지는 vector v4 생성
vector<char> v4 = { 'A', 'B', 'C' };
  • vector에 저장될 타입을 명시
  • vector의 크기만 지정한 경우, 기본값(0)으로 초기화
  • 배열처럼 하드코딩 방식으로 초기화 가능

✔ vector 연산자

vector<int> v1(5, 7);
vector<int> v2 = { 7, 7, 7, 7, 7 };
vector<int> v3 = { 7, 7, 7, 8 };

if (v1 == v2)  // true
    cout << "동일한 벡터";
if (v2 < v3)  // true
    cout << "v3이 v2보다 큰 벡터";
  • 비교 연산자 사용 가능
  • 벡터의 크기와 상관없이 빠른 인덱스의 값이 클수록 큰 벡터로 판단

✔ vector 멤버 함수

1) element access & capacity

functiondescription
v[index]index에 해당하는 원소 반환
v.at(index)index에 해당하는 원소 반환
v.front()첫번째 원소 반환
v.back()마지막 원소 반환
v.size()vector v의 크기 반환
v.empty()비어있으면 true, 그렇지 않으면 false 반환
vector<int> v1 = { 10, 20, 30, 40, 50 };
vector<int> v2;

cout << v1[1];          // 20
cout << v1.at(2);       // 30
cout << v1.front();     // 10
cout << v1.back();      // 50

cout << v1.size();      // 5
cout << v2.size();      // 0

if (v2.empty())  // true
    cout << "v2 size is 0";

2) iterators

functiondescription
v.begin()첫번째 원소를 가리키는 iterator
v.end()마지막 원소의 다음을 가리키는 iterator
v.rbegin()마지막 원소를 가리키는 iterator
v.rend()첫번째 원소의 이전을 가리키는 iterator

iterator(반복자) : 컨테이너에 저장된 요소를 반복적으로 순회하여 각 요소에 접근할 수 있도록 하는 객체

vector<int> v = { 10, 20, 30, 40, 50, 60, 70, 80 };

vector<int>::iterator iter;

for (iter = v.begin(); iter != v.end(); iter++)
{
    cout << *iter << " ";  // output : 10 20 30 40 50 60 70 80
}  

vector<int>::reverse_iterator r_iter;

for (r_iter = v.rbegin(); r_iter != v.rend(); r_iter++)
{
    cout << *r_iter << " ";  // output : 80 70 60 50 40 30 20 10
}  

3) modifiers (수정)

functiondescription
v.push_back(x)원소 x를 마지막 원소 뒤에 추가
v.pop_back()마지막 원소 제거
v.insert(iter, x)원소 x를 iter 위치에 삽입
v.insert(iter, n, x)n개의 원소 x를 iter 위치에 삽입
v.erase(iter)iter 위치의 원소 제거
v.erase(iter1, iter2)iter1 부터 iter2 이전까지 위치의 원소 제거
v.clear()모든 원소 제거
vector<int> v = { 10, 20, 30 };

v.push_back(40);                    // 10 20 30 40
v.push_back(50);                    // 10 20 30 40 50
v.pop_back();                       // 10 20 30 40 

v.insert(v.begin(), 60);            // 60 10 20 30 40
v.insert(v.begin() + 3, 70);        // 60 10 20 70 30 40
v.insert(v.end(), 3, 50);           // 60 10 20 70 30 40 50 50 50
v.erase(v.begin() + 5);             // 60 10 20 70 30 50 50 50
v.erase(v.begin() + 4, v.end());    // 60 10 20 70

0개의 댓글