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.

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]; ... */
    }
    

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.