LINUX.ORG.RU

[C++] [STD] size_type vs int в качестве счётчика цикла итерации.

 ,


0

1

Что лучше для, например, итерации по vector<int> v?

for(int i = 0; i < v.size(); ++i)
{
 //...
}
for(vector<int>::size_type i = 0; i < v.size(); ++i)
{
 //...
}

Чую, что второй вариант, но почему-то в литературе почти всегда применяется первый. Так что лучше?

★★★★★

Последнее исправление: Obey-Kun (всего исправлений: 1)

Второй. int может быть 32-разрядным, а size_type — 64-разрядным. Поэтому при использовании int может появляться трудновылавливаемая ошибка при обработке больших объёмов данных.

bvvv
()
Ответ на: комментарий от Boy_from_Jungle

никогда не использовал итераторы, так как ни разу не приходилось делать что-то кроме тупо прогонки по порядку.

есть ли смысл использовать итераторы, есть я делаю тупо прогонку по порядку? какой профит?

Obey-Kun ★★★★★
() автор топика
Ответ на: комментарий от bvvv

> Второй. int может быть 32-разрядным, а size_type — 64-разрядным. Поэтому при использовании int может появляться трудновылавливаемая ошибка при обработке больших объёмов данных.

Так и полагал. Thanks.

Obey-Kun ★★★★★
() автор топика
Ответ на: комментарий от Obey-Kun

Как раз чтобы не париться с разрядностью счетчика цикла, плюс обобщенные алгоритмы

P1XeL
()
Ответ на: комментарий от Kosyak

> В Qt можно использовать foreach.

у меня там везде оно используется, только если не нужна обратная прогонка.

Obey-Kun ★★★★★
() автор топика

> for(int i = 0; i < v.size()

быдлокод

anonymous
()

Вам нужен счётчик элементов?

std::for_each(v.begin(), v.end(), [](int e)
  {
    //...
  });
m4n71k0r
()
Ответ на: (= от m4n71k0r

> Осталось только «please» добавить =) А то сделает someThingWrong =)

че, в брейнфаке нет такой конструкции?

korvin_ ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.