วิธีที่ถูกต้องในการวนซ้ำเวกเตอร์ใน C ++ คืออะไร?
ลองพิจารณาชิ้นส่วนรหัสสองอันนี้อันนี้ใช้ได้ดี:
for (unsigned i=0; i < polygon.size(); i++) {
sum += polygon[i];
}
และอันนี้:
for (int i=0; i < polygon.size(); i++) {
sum += polygon[i];
}
warning: comparison between signed and unsigned integer expressions
ซึ่งจะสร้าง
ฉันใหม่ในโลกของ C ++ ดังนั้นunsigned
ตัวแปรที่ดูน่ากลัวสำหรับฉันและฉันรู้ว่าunsigned
ตัวแปรอาจเป็นอันตรายหากไม่ได้ใช้อย่างถูกต้องดังนั้น - ถูกต้องหรือไม่
.size()
ไม่ได้ชนิดที่รู้จักunsigned
มันเป็นประเภทunsigned int
std::size_t
std::size_t
เป็น typedef ที่กำหนดโดย _implementation ดูมาตรฐาน std::size_t
อาจเทียบเท่ากับunsigned
การใช้งานปัจจุบันของคุณ แต่นั่นไม่เกี่ยวข้อง การแกล้งมันอาจส่งผลให้โค้ดไม่สามารถพกพาได้และพฤติกรรมที่ไม่ได้กำหนด
std::size_t
ในทางปฏิบัติ คุณคิดว่าเราได้ครอบคลุมทุกอย่างในกระแสความคิดเห็นนี้นานกว่า 6 ปีหรือไม่?