Apa cara yang benar untuk mengulangi vektor dalam C ++?
Pertimbangkan dua fragmen kode ini, ini berfungsi dengan baik:
for (unsigned i=0; i < polygon.size(); i++) {
sum += polygon[i];
}
dan yang satu ini:
for (int i=0; i < polygon.size(); i++) {
sum += polygon[i];
}
yang menghasilkan warning: comparison between signed and unsigned integer expressions
.
Saya baru di dunia C ++, jadi unsigned
variabelnya terlihat sedikit menakutkan bagi saya dan saya tahu unsigned
variabel bisa berbahaya jika tidak digunakan dengan benar, jadi - apakah ini benar?
.size()
bukan tipe unsigned
alias unsigned int
. Itu tipe std::size_t
.
std::size_t
adalah typedef yang didefinisikan oleh _implementation. Lihat Standar. std::size_t
mungkin setara dengan unsigned
dalam implementasi Anda saat ini, tetapi itu tidak relevan. Berpura-pura dapat menghasilkan kode non-portabel dan perilaku yang tidak terdefinisi.
std::size_t
dalam praktek. Apakah Anda pikir kami sudah membahas semuanya dalam arus komentar yang mengoceh selama 6 tahun?