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