C ++ 'da bir vektör üzerinde yineleme yapmanın doğru yolu nedir?
Bu iki kod parçasını düşünün, bu iyi çalışıyor:
for (unsigned i=0; i < polygon.size(); i++) {
sum += polygon[i];
}
ve bu:
for (int i=0; i < polygon.size(); i++) {
sum += polygon[i];
}
hangi üretir warning: comparison between signed and unsigned integer expressions
.
C ++ dünyasında yeniyim, bu yüzden unsigned
değişken benim için biraz korkutucu görünüyor ve unsigned
değişkenler doğru kullanılmazsa tehlikeli olabileceğini biliyorum , bu yüzden - bu doğru mu?
.size()
tipinde değil . Bu tür . unsigned
unsigned int
std::size_t
std::size_t
_ uygulama tarafından tanımlanan bir typedef. Standarda bakınız. mevcut uygulamanızda std::size_t
eşdeğer olabilir unsigned
, ancak bu alakalı değildir. Olduğunu iddia etmek taşınabilir olmayan kodlara ve tanımlanmamış davranışlara neden olabilir.
std::size_t
uygulamada. Sizce 6 yıldan fazla süren bu karışık yorum akışında her şeyi ele aldık mı?