C++ vector


vector를 사용하기 위해서는 <vector> 헤더를 인클루드 해야한다.


vector는 배열 기반 컨테이너로, 길이를 변경할 수 있는 배열이라고 생각하면 이해하기 쉽다.


 생성자

 

 vector v

 빈 컨테이너 벡터 v 생성

 vector v(n)

 벡터 v는 기본값으로 초기화된 n개의 원소를 가짐

 vector v(n, x)

 벡터 v는 x로 초기화된 n개의 원소를 가짐

 vector v(v2)

 벡터 v는 벡터 v2의 복사본

 vector v(b, e)

 벡터 v는 반복자 구간 [b, e)로 초기화된 원소를 가짐


생성자 사용 예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <vector>
using namespace std;
 
int main(void)
{
    vector<int> v1; //길이 = 0
    vector<int> v2(100); //길이 = 100
    vector<int> v3(1005); //길이 = 100, 5로 초기화
    vector<int> v4 = { 12345 }; //길이 5
 
    cout << "v1 크기 : " << v1.size() << '\n';
    cout << "v2 크기 : " << v2.size() << '\n';
    cout << "v3 크기 : " << v3.size() << '\n';
    cout << "v4 크기 : " << v4.size() << '\n';
 
    return 0;
}
cs



자료형으로 pair, tuple 등도 사용할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <vector>
#include <algorithm>
 
using namespace std;
 
int main(void)
{
    vector<pair<intint>> v1 = { {10,20}, {30,40} };
    vector<pair<intint>> v2 = { make_pair(10,20) };
 
    printf("v1 크기 : %d\n", v1.size());
    printf("v2 크기 : %d\n", v2.size());
    
    return 0;
}
 
cs


vector는 배열처럼 임의 접근이 가능하다. ex) v[13] = 12 //벡터의 13번째를 12로 할당


멤버 함수

 push_back()

 벡터의 가장 뒤에 데이터 추가

 pop_back()

 벡터의 마지막 데이터 제거

 clear()

 벡터의 모든 데이터 제거

 resize()

 벡터 크기 변경, 크기보다 뒤에 있는 데이터는 제거

 size()

 벡터의 크기

 erase()

 벡터의 해당 구간 데이터 제거


사용 예제

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
32
33
34
35
36
37
38
39
40
41
42
#include <iostream>
#include <vector>
 
int main()
{
    std::vector<int> myvector;
    int sum(0);
    myvector.push_back(100);
    myvector.push_back(200);
    myvector.push_back(300);
 
    while (!myvector.empty())
    {
        sum += myvector.back();
        myvector.pop_back();
    }
 
    std::cout << "The elements of myvector add up to " << sum << '\n';
 
    // vector is empty
    for (int i = 1; i <= 10; i++) myvector.push_back(i);
 
    // erase the 6th element
    myvector.erase(myvector.begin() + 5);
 
    // erase the first 3 elements:
    myvector.erase(myvector.begin(), myvector.begin() + 3);
 
    std::cout << "myvector contains:";
    for (unsigned i = 0; i<myvector.size(); ++i)
        std::cout << ' ' << myvector[i];
    std::cout << '\n';
 
    //resize
    myvector.resize(2);
    std::cout << "my vector size : " << myvector.size() << '\n';
 
    //clear
    myvector.clear();
    std::cout << "my vector size : " << myvector.size() << '\n';
    return 0;
}
cs


실행 결과



참조: http://www.cplusplus.com/reference/vector/vector/

참고문헌: 뇌를 자극하는 C++ STL

'컴퓨터공학 > STL' 카테고리의 다른 글

[STL] C++ STL list  (0) 2018.07.19
[STL] C++ STL deque  (0) 2018.07.19
[STL] C++ STL string  (0) 2018.07.19
[STL]C++ STL priority_queue  (0) 2018.07.19
[STL]C++ STL queue  (0) 2018.07.19

+ Recent posts