>백엔드 개발 >C++ >std::Vector를 반복할 때 부호 있는 인덱스 변수 또는 부호 없는 인덱스 변수를 사용해야 합니까?

std::Vector를 반복할 때 부호 있는 인덱스 변수 또는 부호 없는 인덱스 변수를 사용해야 합니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-11 22:46:03318검색

Should I Use a Signed or Unsigned Index Variable When Iterating Over a std::vector?

std::Vector에 대한 반복: 부호 있는 인덱스 변수와 부호 없는 인덱스 변수

C에서 벡터를 반복할 때 부호 있는 인덱스 변수 중 하나를 사용할 수 있습니다. 또는 부호 없는 인덱스 변수. 그러나 주의해야 할 몇 가지 미묘한 차이점이 있습니다.

부호 없는 인덱스 변수를 사용하면 정의되지 않은 동작을 초래할 수 있는 음수 인덱스의 가능성이 제거되므로 일반적으로 선호됩니다. 예를 들어 다음 코드는 잘 작동합니다.

for (unsigned i = 0; i < polygon.size(); i++) {
    sum += polygon[i];
}

그러나 이 코드는 경고를 생성합니다.

for (int i = 0; i < polygon.size(); i++) {
    sum += polygon[i];
}

경고는 i < polygon.size()는 부호 있는 정수 표현식과 부호 없는 정수 표현식 사이에 있습니다. 이로 인해 경우에 따라 예상치 못한 동작이 발생할 수 있습니다.

따라서 벡터를 반복할 때는 항상 부호 없는 인덱스 변수를 사용하는 것이 가장 좋습니다.

인덱스 대신 반복자를 사용하는 것이 더 나을 수도 있습니다. . 반복자는 벡터의 요소에 액세스하는 보다 추상적인 방법을 제공하며 실수를 방지하는 데 도움이 될 수 있습니다. 예를 들어 다음 코드를 사용하여 벡터를 반복할 수 있습니다.

for (std::vector<int>::iterator it = polygon.begin(); it != polygon.end(); ++it) {
    sum += *it;
}

일반적으로 벡터를 반복할 때는 인덱스 대신 반복자를 사용하는 것이 좋습니다.

위 내용은 std::Vector를 반복할 때 부호 있는 인덱스 변수 또는 부호 없는 인덱스 변수를 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.