Здравствуйте, Patalog, Вы писали:++
P>Здравствуйте, Kluev, Вы писали:
P>[]
K>>Если вам не понятен этот код позвольте я первый кину в вас камень
P>Практически любой код рано или поздно становиться понятен, вопрос лишь в том, сколько времени над ним медитировать.
P>И да, основное здесь
P>P>В алгоритме, в котором нужно "перебрать все элементы кроме первого и последнего" всегда будет отдельная ветка логики для пустого массива (скорее даже size() < 3), иначе он будет ломаться пусть не на этом конкретном цикле, а где-то еще. А это "всегда будет корректно работать" — тупое заметание мусора под коврик.
"Всегда будет" — это громкие, но пустые заявления. Вот к примеру простой жизненный пример: итерация пар соседних элементов в массиве для вычисления длинны полилинии
double len = 0;
for (int i = 0; i < points.size() - 1; i++)
len += distance(point[i], point[i + 1]);
return len;
Один универсальный цикл на все случаи жизни. Никакие дополнительные ветки не нужны. В std::С++ такое естественно работать не будет, std-программист либо наступит на грабли, либо будет вынужден погрузиться в микро-менеджмент и "перебрасывать слагаемые"
for (int i = 1; i < points.size(); i++)
На все это тратятся ненужные временные и умственные ресурсы. Особенно смешно выглядят упражнения некоторых товарищей, которые найдя в языке костыль предназначенный для затыкания дыры, устраивают вокруг него пируэты считая это высшим пилотажем программирования.