Cách lặp chính xác của một vectơ trong C ++ là gì?
Hãy xem xét hai đoạn mã này, đoạn này hoạt động tốt:
for (unsigned i=0; i < polygon.size(); i++) {
sum += polygon[i];
}
và cái này nữa:
for (int i=0; i < polygon.size(); i++) {
sum += polygon[i];
}
mà tạo ra warning: comparison between signed and unsigned integer expressions
.
Tôi là người mới trong thế giới của C ++, vì vậy unsigned
biến này có vẻ hơi đáng sợ đối với tôi và tôi biết unsigned
các biến có thể nguy hiểm nếu không được sử dụng đúng cách, vậy - điều này có đúng không?
.size()
không phải là loại unsigned
aka unsigned int
. Đó là loại std::size_t
.
std::size_t
là một typedef được xác định bằng _im THỰC HÀNH . Xem Tiêu chuẩn. std::size_t
có thể tương đương với unsigned
việc triển khai hiện tại của bạn, nhưng điều đó không liên quan. Giả vờ nó có thể dẫn đến mã không di động và hành vi không xác định.
std::size_t
trong thực tế. Bạn có nghĩ rằng chúng tôi đã bao gồm tất cả mọi thứ trong dòng ý kiến lan man hơn 6 năm này không?