저는 고성능과 낮은 메모리 오버 헤드를 염두에두고 C ++로 작성된 많은 계산 코드로 작업합니다. STL 컨테이너 (대부분 vector)를 많이 사용하며 거의 모든 단일 함수에서 해당 컨테이너를 반복합니다.
반복 코드는 다음과 같습니다.
for (int i = 0; i < things.size(); ++i)
{
// ...
}
그러나 서명 된 / 서명되지 않은 불일치 경고 (Visual Studio의 C4018)를 생성합니다.
교체 int일부 unsigned유형 우리가 자주의 OpenMP 프라그 마를 사용하기 때문에 문제이며, 그것은으로 카운터가 필요합니다 int.
나는 (수백 개의) 경고를 억제하려고하는데 문제에 대한 우아한 해결책을 놓친 것 같아 두렵다.
반복자에서 . 반복자는 적절한 장소에 적용될 때 훌륭하다고 생각합니다. 내가 작업중인 코드는 임의 액세스 컨테이너를 또는 다른 것으로 변경 하지 않으며list (따라서 반복 int i은 이미 컨테이너에 구애받지 않습니다) 항상 현재 인덱스가 필요합니다. 그리고 입력해야하는 모든 추가 코드 (반복자 자체 및 인덱스)는 문제를 복잡하게 만들고 기본 코드의 단순성을 난독하게 만듭니다.
int.