Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Классы: как правильно заполнить std::vector? 
V
    Опции темы
zim22
Дата 23.3.2009, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 24
Всего: 69



Цитата(Helmet @  23.3.2009,  12:32 Найти цитируемый пост)
А вообще компилятор должен ругать и отказываться компилировать

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


--------------------
PM MAIL   Вверх
Helmet
Дата 23.3.2009, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 27.2.2009
Где: Someone's hea d

Репутация: нет
Всего: 1



zim22, опять же цитата из Мейерса: "Контейнеры auto_ptr (COAP, Containers of auto_ptr) запрещены, а программа, которая попытается их использовать, не будет компилироваться. Комитет по стандартизации С++ приложил неслыханные усилия в этом направлении."

Добавлено через 5 минут и 46 секунд
Код

std::auto_ptr < int > ptr(new int(5));
std::vector < std::auto_ptr < int > > v;
v.push_back(ptr);

9 студия не компилирует. Говорит нет конструктора копирования.
PM   Вверх
zim22
Дата 23.3.2009, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 24
Всего: 69



Цитата(Helmet @  23.3.2009,  12:54 Найти цитируемый пост)
9 студия не компилирует

действительно. вот облом smile



--------------------
PM MAIL   Вверх
Alca
Дата 23.3.2009, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 7
Всего: 50



Так так можно делать?
Код

m_vecpSL.push_back(new TStringList());



--------------------
PM WWW ICQ Skype Jabber   Вверх
mrbrooks
Дата 23.3.2009, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 2
Всего: 306



Цитата(Alca @  23.3.2009,  14:50 Найти цитируемый пост)

Так так можно делать?


Ответь - ЗАЧЕМ?
Где это нужно?
Какой злой гений попросил тебя это вытворять с VCL? 

То что ты делаешь - это масло маслянное. Более того вообще не рекомендуются смешивать VCL и STL. 
Ты спросишь почему - а я тебе отошлю к  Холингверту, Баттерфилду и их пацанам.

PM MAIL   Вверх
Anikmar
Дата 23.3.2009, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



Цитата

mrbrooks
То что ты делаешь - это масло маслянное. Более того вообще не рекомендуются смешивать VCL и STL. 
Ты спросишь почему - а я тебе отошлю к  Холингверту, Баттерфилду и их пацанам.


Ну мне кажется это слишком категорично. Неужели vector<TDateTime> тоже не надо использовать? Некоторые простые классы почему нельзя в вектор запихивать?

PM MAIL ICQ   Вверх
Rififi
Дата 23.3.2009, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1254
Регистрация: 9.3.2008

Репутация: 11
Всего: 36



Тут заметил одну интересную фишку...
А что, BrainBench совсем испортился, что за такие вещи (std::vector< const std::auto_ptr<TStringList> >) теперь уже звание Master C++ дают?  smile 
PM MAIL   Вверх
mrbrooks
Дата 23.3.2009, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 2
Всего: 306



Цитата(Anikmar @  23.3.2009,  15:12 Найти цитируемый пост)
Ну мне кажется это слишком категорично.

Пусть это будет на совести авторов. Они были убедительны.  smile 
Цитата(Anikmar @  23.3.2009,  15:12 Найти цитируемый пост)
Неужели vector<TDateTime> тоже не надо использовать? Некоторые простые классы почему нельзя в вектор запихивать?

А зачем? У VCL полно своего инструментария. Я лично никогда не мешаю бормановские классы со стандартными. Как то спокойнее. Да и необходимости в этом не вижу.
PM MAIL   Вверх
Anikmar
Дата 23.3.2009, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



Цитата

mrbrooks
А зачем? У VCL полно своего инструментария. Я лично никогда не мешаю бормановские классы со стандартными. Как то спокойнее. Да и необходимости в этом не вижу. 


У меня так как правило само собой получается, но этот конкретный пример я привел из своей практики - ну понадобился мне массив дат. Причем размер изначально непонятный, в процессе работы меняется. Что вы мне порекомендуете из стандартных средств VCL? Может я просто чего-то не знаю. TList? Неудобно - чистить надо.

Второй момент - собственные классы, в состав которых входит та же дата либо еще какой-нибудь объект VCL. Тоже иногда вектор вполне подходит. Просто если такие ограничения действительно аргументированы - то надо к ним прислушаться. А если из разряда "неаккуратненько как-то" - то это чисто на вкус и на цвет.


PM MAIL ICQ   Вверх
vinter
Дата 23.3.2009, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



mrbrooks, у всех свои тараканы, я вот например не стану юзать QT'шные поделки, которые есть в STL, хотя и использую QT. В этом нет ничего плохого 


--------------------
Мой блог
PM MAIL WWW   Вверх
Lazin
Дата 23.3.2009, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



а нельзя просто вычислить индекс в StringList, например тебе нужна структура данных их 3х стринг листов, каждый из которых содержит 10 строк, тогда просто создаешь 1 StringList на 30 строк, 0-9-й элементы, это условно 1-й stringlist, 10-19й - 2-й, с 20-29й - 3-й StringList
PM MAIL Skype GTalk   Вверх
mrbrooks
Дата 23.3.2009, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 2
Всего: 306



vinter, за QT ничего не скажу. Не стал бы я в этом плане сравнивать VCL и QT  smile 

Цитата(Anikmar @  23.3.2009,  15:37 Найти цитируемый пост)
Что вы мне порекомендуете из стандартных средств VCL? Может я просто чего-то не знаю. TList? Неудобно - чистить надо.

Его родимого. Можно TBaseArray, TValueArray. Насчет чистки - ну а кто сказал что будет легко.  smile 

Цитата(Anikmar @  23.3.2009,  15:37 Найти цитируемый пост)
Просто если такие ограничения действительно аргументированы - то надо к ним прислушаться. 

Авторы были убедительны. Правда речь шла о шестом Бормане - но сомневаюсь я что  что - то изменилось. 
PM MAIL   Вверх
Anikmar
Дата 23.3.2009, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



Цитата

mrbrooks
Насчет чистки - ну а кто сказал что будет легко.   


Вот и я про то же. Зачем изобретать велосипед? Если приложение однозначно должно работать без VCL, то все понятно. Но почему объекты VCL нельзя запихивать в vector - для меня загадка. Vector - обычный шаблон и в нем вроде как нет ничего особенно такого, чтобы нельзя было применить конструкцию vector<TDateTime>.

Проведу аналогию (господи, только бы к баяну не привел мой пример), использовать конструкцию while(true){..... только чтобы вместо goto использовать break. Лично я не вижу здесь никакой красоты и понятности, наоборот - дополнительный отступ, лишние переносы, следить лишний раз за скобками.

Поэтому интересно было бы услышать действительно весомый аргумент: Не рекомендуется использовать vector<TDateTime> потому, что это может привести к таким-то отрицательным моментам:.......


PM MAIL ICQ   Вверх
vinter
Дата 23.3.2009, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



Цитата(Anikmar @  23.3.2009,  17:08 Найти цитируемый пост)
Проведу аналогию (господи, только бы к баяну не привел мой пример), использовать конструкцию while(true){..... только чтобы вместо goto использовать break. Лично я не вижу здесь никакой красоты и понятности, наоборот - дополнительный отступ, лишние переносы, следить лишний раз за скобками.

еретик   smile 


--------------------
Мой блог
PM MAIL WWW   Вверх
Anikmar
Дата 23.3.2009, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



Цитата

vinter
еретик     


Я так и знал  smile  smile 
PM MAIL ICQ   Вверх
Страницы: (4) Все 1 [2] 3 4 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0591 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.