Russian Qt Forum
Ноябрь 27, 2024, 12:39 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 2 3 [4]   Вниз
  Печать  
Автор Тема: QList и QVector  (Прочитано 38027 раз)
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #45 : Август 30, 2010, 10:53 »

А чё в кувекторе не сделали?

Ну как бы это разне контейнеры, с разной логикой размещения данных. Если бы ты сходил по моей ссылке выше, то понял бы разницу между этими контейнерами. Конкретный контейнер служит для конкретных целей. "Слепить" функционал всех контейнеров в один имхо как-то неочень.
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Alex_cs_gsp
Гость
« Ответ #46 : Август 30, 2010, 14:12 »

Хаачу хранить  инты и вставлять их в начало контейнера и работать как с масивом. Какой контейнер? Кулист - памяти в два раза больше. Так почему бы не сделать в кувекторе вставку в начало?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #47 : Август 30, 2010, 14:43 »

Хаачу хранить  инты и вставлять их в начало контейнера и работать как с масивом. Какой контейнер? Кулист - памяти в два раза больше. Так почему бы не сделать в кувекторе вставку в начало?
Как уже обсуждалось в этой теме, для таких типов QList оптимизирован и не требует больше памяти. Но нет способа работать с QList как с "С" массивом, он для этого не предназначен. Вставка в начало QVector - ну "гипотетчески" возможна, но, на мой взгляд, противоречит природе vector (QVector). Как должны вести себя методы resize, reserve,capacity если мы хотим (втихаря) резервировать место внвчале?
Записан
Alex_cs_gsp
Гость
« Ответ #48 : Август 30, 2010, 15:12 »

Не знаю. Может reserve_front(), reserve_back()  Веселый Смеющийся Веселый Проблема надуманная, но все-таки это сделать можно.
« Последнее редактирование: Август 30, 2010, 15:29 от Alex_cs_gsp » Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #49 : Август 30, 2010, 15:54 »

Не знаю. Может reserve_front(), reserve_back()  Веселый Смеющийся Веселый Проблема надуманная, но все-таки это сделать можно.
Ну чего ж надуманная если решать это придется?  Улыбающийся  Никто не мешает сделать свой класс на основе QVector если вопрос о вставке в начало стоит остро
Записан
Alex_cs_gsp
Гость
« Ответ #50 : Август 30, 2010, 20:21 »

Размышляя...

Код:
struct CVecCapacity
{
   unsigned long uFront;
   unsigned long uBack;
};

void reserve(unsigned long uBack, unsigned long uFront = 0);
void reserve(const CVecCapacity &);
const CVecCapacity & capacity();
unsigned long size();
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #51 : Август 30, 2010, 20:27 »

Размышляя...
Дело хорошее, но "(unsigned) long" замените - он 8 байт на одних платформах и 4 байт на до.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #52 : Август 30, 2010, 20:37 »

Зачем? Вектор он и есть вектор. Если нужно другое поведение, стоит взглянуть на другие контейнеры или пересмотреть логику программы.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Alex_cs_gsp
Гость
« Ответ #53 : Август 30, 2010, 21:19 »

Да не нужно мне, просто разговор зашел, почему не сделали, если можно.
Записан
Страниц: 1 2 3 [4]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.06 секунд. Запросов: 23.