C and C++

[C++][STL] vector for문 올바로 사용하기

개발새발 2021. 2. 6. 12:32
반응형

대부분의 경우 vector를 for문에 사용할 때 iterator를 사용하거나 초기화식을 int를 사용한다.

 

iterator로 사용할 경우 문제없지만 초기화식 타입에 int를 사용할 경우 오버플로우를 발생할 수 있다.

왜냐하면 vector의 size는 정확히 말하면 signed int가 아니라 unsigned int 타입이기 때문이다.

따라서 이러한 버그가 발생하면 찾기도 힘드니 정확한 방법으로 vector를 사용하도록 한다.

 

예제

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <vector>
 
using namespace std;
 
int main(void) {
    vector<int> vt;
    vt.push_back(10);
    vt.push_back(10);
    vt.push_back(10);
    vt.push_back(10);
    vt.push_back(10);
    vt.push_back(10);
    
    for(vector<int>::size_type i = 0; i < vt.size(); i++) {
        cout<< vt[i] <<endl;
    }
 
    return 0;
}
cs
반응형