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 unsigneddeğişken benim için biraz korkutucu görünüyor ve unsigneddeğişkenler doğru kullanılmazsa tehlikeli olabileceğini biliyorum , bu yüzden - bu doğru mu?
.size()tipinde değil . Bu tür . unsignedunsigned intstd::size_t
std::size_t_ uygulama tarafından tanımlanan bir typedef. Standarda bakınız. mevcut uygulamanızda std::size_teş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_tuygulamada. Sizce 6 yıldan fazla süren bu karışık yorum akışında her şeyi ele aldık mı?