Как правильно перебирать вектор в 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
- это определение типа, определяемое _implementation. Смотрите стандарт. std::size_t
может быть эквивалентно unsigned
в вашей текущей реализации, но это не имеет значения. Притворство может привести к непереносимому коду и неопределенному поведению.
std::size_t
на практике. Как вы думаете, мы уже охватили все это в этом бессвязном потоке комментариев за 6 лет?