Russian Qt Forum

Qt => Общие вопросы => Тема начата: kibsoft от Май 01, 2010, 18:47



Название: QList и QVector и т.д. Как реализованы?
Отправлено: kibsoft от Май 01, 2010, 18:47
Как реализованы данные классы? Вот например, если использовать односвязный список или двусвязный, то как можно сделать доступ к элементу по индексу? Или же там используются другие структуры данных?


Название: Re: QList и QVector и т.д. Как реализованы?
Отправлено: alexman от Май 01, 2010, 18:50
в исходники загляни!


Название: Re: QList и QVector и т.д. Как реализованы?
Отправлено: kibsoft от Май 01, 2010, 18:57
Заглядывал..не очень то и понятно что там делается..попробуйте сами посмотрите, потом узнаем как они вам помогли.


Название: Re: QList и QVector и т.д. Как реализованы?
Отправлено: BRE от Май 01, 2010, 18:59
Заглядывал..не очень то и понятно что там делается..попробуйте сами посмотрите, потом узнаем как они вам помогли.
Поищи по форуму, уже несколько раз обсуждали.  ;)


Название: Re: QList и QVector и т.д. Как реализованы?
Отправлено: Igors от Май 02, 2010, 13:01
Как реализованы данные классы? Вот например, если использовать односвязный список или двусвязный, то как можно сделать доступ к элементу по индексу? Или же там используются другие структуры данных?
QVector - это массив элементов, с ним можно работать как с обычным "С" массивом (до тех пор пока нет вставки/ удаления). QList - это массив указателей на элементы. Памяти нужно чуть больше но зато вставки/удаления намного быстрее. QList не имеет никакого отношения к одно-двух связным спискам. Для простых типов (напр QList <int>) QList хранит сами элементы (т.к. их размер не превышает размер указателей). Вообще тема возникала 4-5 раз (только на моей памяти) так что советы воспользоваться поиском справедливы  :)