반응형
대부분의 경우 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 |
반응형
'C and C++' 카테고리의 다른 글
[C/C++] for문에서 전위증가 후위증가 차이점 (0) | 2021.02.06 |
---|---|
[C++][STL] vector의 메모리(capacity) 완벽하게 제거하기 feat. swap (0) | 2021.02.06 |
[C] C에서 생성자 소멸자 흉내기 (0) | 2020.10.11 |
[C++][STL] STL을 활용하여 상한값 하한값 단순화 (0) | 2020.05.03 |
[C++] Template include 오류 해결 방법 (0) | 2020.04.26 |