beardog 15.06.2011 11:38 26691148321308118954676098

QList метод size() возвращает метод int, а у std::list тот же метод возвращает нечто совсем странное, но чаще всего это unsigned int
Удачного, блин, дебага

qt, STL, c++
1. werehuman 15.06.2011 11:40 Psi+

ENJOY YOUR C++

2. DOMr 15.06.2011 11:53 Psi-work

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 контейнерами... печаль =(

3. werehumanDOMr /2 15.06.2011 11:54 Psi+

ты собираешься засунуть в список 2^16 элементов?

4. DOMrwerehuman /3 15.06.2011 11:55 Psi-work

я? да, вроде, нет пока. а что?

5. jtootf 15.06.2011 11:56

std::list::size() возвращает unsigned integral type; ну а в контейнерах Qt очень много что сделано per rectum

6. werehumanDOMr /4 15.06.2011 11:56 Psi+

а тогда что тебя так беспокоит тип?

7. DOMrwerehuman /6 15.06.2011 11:57 Psi-work

беспокоит отсутвие совместимости контейнеров между Qt и STL. Которую разработчики Qt гарантировали. (если мне не изменяет память)

8. beardogwerehuman /6 15.06.2011 11:58 26691148321308118954676098

но вот я, например, попробовал перевести программу с Qt на STL и обнаружил что вдруг в одном месте сравнение перестало работать

9. werehumanbeardog /8 15.06.2011 11:58 Psi+

перестало работать сравнение int и unsigned int, учитывая, что число положительное и меньше 2^16?

10. jtootfwerehuman /6 15.06.2011 12:03 galois

если можно, объясни мне семантику отрицательного размера списка. so far я откровенно не понимаю смысла защищать откровенно кривое решение

11. beardogwerehuman /9 15.06.2011 12:05 26691148321308118954676098

было
int idx ....
if (idx>=arr.size())
при idx==-1 условие вдруг стало выполнятся. Подозреваю, потому, что стало unsigned

12. werehumanjtootf /10 15.06.2011 12:05 Psi+

в этом мире всё кривое. Вопрос в том, какие вещи являются настолько кривыми, что на них нужно жаловаться.

13. jtootfwerehuman /12 15.06.2011 12:06 galois

лишняя соломинка ломает хребет верблюду

14. werehumanbeardog /11 15.06.2011 12:06 Psi+

правильно подозреваешь. А что есть idx, и почему оно вдруг становится отрицательным? Уж не спрятался ли тут некий грязный хак?

15. beardogwerehuman /14 15.06.2011 12:09 26691148321308118954676098

ну, мало ли чего там спряталось, это уже совсем другая история

Do you really want to delete ?