beardog
15.06.2011 11:38 26691148321308118954676098
QList метод size() возвращает метод int, а у std::list тот же метод возвращает нечто совсем странное, но чаще всего это unsigned int
Удачного, блин, дебага
ENJOY YOUR C++
ANSI ISO IEC 14882 2003, 23.2.2:
....
typedef _implementation defined_ size_type;
....
size_type size() const;
но в 23.1:
X::size_type
unsigned integral type
size_type can represent
any non-negative value of
difference_type
А, вроде бы, Qt обещали совместимость с STL контейнерами... печаль =(
ты собираешься засунуть в список 2^16 элементов?
я? да, вроде, нет пока. а что?
std::list::size() возвращает unsigned integral type; ну а в контейнерах Qt очень много что сделано per rectum
а тогда что тебя так беспокоит тип?
беспокоит отсутвие совместимости контейнеров между Qt и STL. Которую разработчики Qt гарантировали. (если мне не изменяет память)
но вот я, например, попробовал перевести программу с Qt на STL и обнаружил что вдруг в одном месте сравнение перестало работать
перестало работать сравнение int и unsigned int, учитывая, что число положительное и меньше 2^16?
если можно, объясни мне семантику отрицательного размера списка. so far я откровенно не понимаю смысла защищать откровенно кривое решение
было
int idx ....
if (idx>=arr.size())
при idx==-1 условие вдруг стало выполнятся. Подозреваю, потому, что стало unsigned
в этом мире всё кривое. Вопрос в том, какие вещи являются настолько кривыми, что на них нужно жаловаться.
лишняя соломинка ломает хребет верблюду
правильно подозреваешь. А что есть idx, и почему оно вдруг становится отрицательным? Уж не спрятался ли тут некий грязный хак?
ну, мало ли чего там спряталось, это уже совсем другая история