2011-11-18 20 views

Trả lời

44

Thay thế tất cả các định nghĩa của int i với size_t i.

std::vector<T>::size() trả về loại size_t chưa được ký (vì không có ý nghĩa đối với vùng chứa chứa số phần tử âm).

+1

Đây là ý tưởng tồi kể từ -3 int sẽ lớn hơn sau đó size_t 31 với giải pháp của bạn. Trong khi giải pháp này hoạt động cho ví dụ hiện tại, điều này có thể dẫn đến khó gỡ lỗi trong các trường hợp khác. – Sergei

6

Say std::size_t i = 0;:

for (std::size_t i = 0; i != v.size(); ++i) { /* ... */ } 
5

Bạn cũng có thể sử dụng vòng lặp thay vì để tránh những tiềm năng cho một cảnh báo hoàn toàn:

for (std::vector<int>::const_iterator i = v.begin(); i != v.end(); ++i) 
{ 
    ... 
} 

Hoặc nếu bạn đang sử dụng C++ 11:

for (int i : v) 
{ 
    ... 
} 
Các vấn đề liên quan