C++ vector의 이터레이션
조회수 5519회
벡터 이터레이션은 어떻게 써야 하나요? 소스코드 1은 정상적으로 실행되는데 소스코드 2는 warining이 떠요.
C++
배운지는 얼마 안됐고
예전에 unsigned
는 진짜 조심해서 쓰라고 하는걸 어디서 주워들어서
unsigned
쓰는 게 좀 무섭네요
소스코드1
for (unsigned i=0; i < polygon.size(); i++) {
sum += polygon[i];
}
소스코드2
for (int i=0; i < polygon.size(); i++) {
sum += polygon[i];
}
warning 내용(소스코드2):
comparison between signed and unsigned integer expressions.
1 답변
-
뒤에서부터 Iterating
링크를 보세요
앞에서부터 Iterating
뒤에서부터 iterating 하는 거랑 똑같습니다. 시작하는 위치랑
iterator
를 감소시키던걸 증가시키는 걸로 바꾸면 되지요.*인덱스를 쓸 땐
unsigned
/signed int
/size_t
말고container
의size_type
을 쓰세요. 이유는 뒤에서부터 Iterating에 적어놨습니다.std::vector에 접근할 때
iterator로 접근
for(std::vector<T>::iterator it = v.begin(); it != v.end(); ++it) { /* std::cout << *it; ... */ }
인덱스로 접근
for(std::vector<int>::size_type i = 0; i != v.size(); i++) { /* std::cout << someVector[i]; ... */ }
배열에 접근할 때
iterator로 접근
for(element_type* it = a; it != (a + (sizeof a / sizeof *a)); it++) { /* std::cout << *it; ... */ }
인덱스로 접근
for(std::size_t i = 0; i != (sizeof a / sizeof *a); i++) { /* std::cout << a[i]; ... */ }
댓글 입력