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 unsignedbiến này có vẻ hơi đáng sợ đối với tôi và tôi biết unsignedcá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 unsignedaka unsigned int. Đó là loại std::size_t.
std::size_tlà một typedef được xác định bằng _im THỰC HÀNH . Xem Tiêu chuẩn. std::size_tcó thể tương đương với unsignedviệ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_ttrong 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?