C++ 에서 표준 템플릿 라이브러리인 STL(Standard Template Library)의 가장 기본적인 시퀀스 컨테이너인 vector에 대해서 설명하겠습니다.

기본적으로 배열과 비슷한 부분이 많이 있습니다.

#include<vector> 헤더파일을 포함시켜 주시고 사용하면 됩니다.

선언을 할때 vector<int> v와 같은 방식으로 선언을 하며 크기를 vector<int> v(10) 과 같이 임의 지정할 수도 있습니다.

vector에 저장할 수 있는 크기가 있으며 그것을 초과 할 경우 vector에 인자들을 복사하여 다른 메모리에 할당하면서 크기를 늘립니다.



1. 기본 선언과 인자 추가 , 탐색

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
#include<iostream>
#include<vector>
using std::cout;
using std::endl;
using std::vector;
 
int main() {
    //선언
    vector<int> v;

    //가장뒤에 인자추가
    v.push_back(5);        // [5]
    v.push_back(15);    // [5, 15]
    v.push_back(25);    // [5, 15, 25]
    v.push_back(1);        // [5, 15, 25, 1]
    
    //탐색
    for (unsigned int i = 0; i < v.size(); i++) {
        cout << v[i] << endl;
    }
    
    cout << "----------"<<endl;
                     
    //탐색2 iterator 이용하기
    vector<int>::iterator iter;
    for (iter = v.begin(); iter != v.end(); iter++) {
        cout << *iter << endl;
    }
    return 0;
}







2. size() 와 clear()

1
2
3
4
5
6
7
8
9
10
11
12
int main() {
    vector<int> v;
    v.push_back(-11);        
    v.push_back(-22);
    v.push_back(33);
    
    //사이즈 측정 및 초기화 함수
    cout << v.size() << endl;    // 3 출력
    v.clear();                    // vector 내용 초기화
    cout << v.size() << endl;    // 0 출력
    return 0;
}





3. 중간에 인자 넣기( insert())

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int main() {
    vector<char> v;
    v.push_back('a');
    v.push_back('b');
    v.push_back('d');
    v.push_back('e');
 
    //b 다음에 c 삽입하기
    vector<char>::iterator iter;
    for (iter = v.begin(); iter != v.end(); ++iter) {
        if (*iter == 'b') {    //b찾기
            v.insert(iter+1'c');    //b다음에 c 삽입하기
            break;
        }
    }
 
    //결과 출력
    for (iter = v.begin(); iter != v.end(); ++iter) {
        cout << *iter << endl;
    }
    return 0;
}





4. 인자 삭제하기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
int main() {
    vector<double> v;
    v.push_back(1.1);
    v.push_back(3.3);
    v.push_back(-1.3);
    v.push_back(11);
    v.push_back(-5);
 
    //음수 제거하기
    vector<double>::iterator iter;
    for (iter = v.begin(); iter != v.end(); ) {
        if (*iter < 0) {            // 음수 찾기
            iter = v.erase(iter);    // 인자 삭제, 삭제 후 다음 인자 반환
        } else {
            ++iter;
        }
    }
 
    //결과 출력
    for (iter = v.begin(); iter != v.end(); ++iter) {
        cout << *iter << endl;
    }
    return 0;
}





Posted by 꿈만은공돌
,