C++ vector의 이터레이션


벡터 이터레이션은 어떻게 써야 하나요? 소스코드 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.

  • 2016년 01월 15일에 작성됨

조회수 328


1 답변


좋아요
0
싫어요
채택취소하기

뒤에서부터 Iterating

링크를 보세요

앞에서부터 Iterating

뒤에서부터 iterating 하는 거랑 똑같습니다. 시작하는 위치랑 iterator를 감소시키던걸 증가시키는 걸로 바꾸면 되지요.

*인덱스를 쓸 땐 unsigned/signed int/size_t말고 containersize_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]; ... */
}
  • 2016년 01월 15일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close