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 unsignedvariabelnya terlihat sedikit menakutkan bagi saya dan saya tahu unsignedvariabel bisa berbahaya jika tidak digunakan dengan benar, jadi - apakah ini benar?
.size()bukan tipe unsignedalias unsigned int. Itu tipe std::size_t.
std::size_tadalah typedef yang didefinisikan oleh _implementation. Lihat Standar. std::size_tmungkin setara dengan unsigneddalam implementasi Anda saat ini, tetapi itu tidak relevan. Berpura-pura dapat menghasilkan kode non-portabel dan perilaku yang tidak terdefinisi.
std::size_tdalam praktek. Apakah Anda pikir kami sudah membahas semuanya dalam arus komentar yang mengoceh selama 6 tahun?