Здравствуйте, Kluev, Вы писали:
K>А давайте представим, что земля завтра налетит на небесную ось?
Нет, не представим. Потому что это не имеет отношения к разработке софта.
K>У классов на основе списков и на основе массивов разные сценарии использования, и если требуется то такие в программе живут параллельно, а не переделываются из одного в другой.
Какая наивность. Вы вообще софт, который развивается больше одного месяца, когда-нибудь разрабатывали?
Требования к софту меняются. Профилирование заставляет менять структуры данных в программе. И т.д., и т.п.
K>Это вам потребуется. А мне потребуется написать
K>K>if (vec.valid_index(i))
K>
K>Я использую свои классы с рациональным набором операций
И что же будет внутри valid_index? Неужели всего одна проверка?
K>Если вы себя официально позиционируете умнее своего собеседника, то вам надо видеть хотя-бы дальше своего носа.
Нет, не умнее. Вероятнее всего просто опытнее.
K>Но в вашем наивном примере, в якобы эффективном переходе от двух сравнений в if(i >= 0 && i < N) к одному в беззнак.арифметике, вы не видите леса за своим носом. Если вы "вычисляете" индекс в беззнаковой арифметике, то чтобы избежать переполнения ваши проверки просто переедут из кода обращения к массиву, в код вычисления индекса.
С чего бы? Это во-первых.
Во-вторых, программисты ошибаются. Поэтому даже в результате вычисления индекса с проверками по ходу вычисления, все равно может получится некорректный индекс. И последним бастионом выступит либо vector::at, либо его аналог.
В-третьих, даже если последовать вашему совету и делать проверки при вычислениях индекса, то там все равно будет две проверки вместо одной.
K>Причем их число будет пропорционально размеру кода.
Еще раз, с чего бы?
K>В знаковой арифметике вы откупаетесь одним простым и эффективным if(i >= 0 && i < N)
Т.е. в вашей вселенной
if(i>=0 && i<N) прощее и эффективнее
if(i < N)? O_o.
K>Вы — человек действующий шаблонно по указивке комитета, пытаетесь поучать человека действующего осознанно.
А с какого бодуна вы решили, что я действую по указивке комитета? Так уж получилось, что безннаковые числа для размерностей и индексов я начал применять еще до того, как комитет по стандартизации C++ начал работать.
Ну и, в отличии от вас, я не навязываю свою точку зрения. Были бы размерности/индексы знаковыми -- ок, работал бы со знаковыми или использовал бы беззнаковые, там где это нужно. Сейчас они беззнаковые и ОК, меня не парит то, что в чьих-то кодовых базах размерности/индексы знаковые.
Я не заставляю вас перейти от знаковых индексов к беззнаковым. И не пытаюсь доказать вам, что вы неправы в использовании знаковых индексов. И, уж тем более, не называю преверженцев знаковых размерностей/индексов моральными уродами, чье мнение не должно восприниматься всерьез.
Поэтому-то вы "малолетний дебил" (с), который считает, что его инфантильные желания должны быть превыше всего, а его мнение безусловно является самым правильным.