Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Реализованные динамические структуры данных

53K
23 июня 2010 года
FunTime
16 / / 23.06.2010
В с++ builder'e есть уже реализованные динамические структуры данных? Интересуют односвязные и двусвязные списки.
В какой структуре лучше и удобнее хранить объекты, если будет потребность удалять из любого места, добавлять в любое место и не известно их количество.
2.1K
23 июня 2010 года
Norgat
452 / / 12.08.2009
STL
53K
25 июня 2010 года
FunTime
16 / / 23.06.2010
Спасибо, немного разобрался.
А можно пример, как создать список компонентов? Например кнопок. В чём тут ошибка?
 
Код:
#include <list>
using namespace std;

 
Код:
list<TButton> Buttons;
TButton *b1 = new TButton(this);
Buttons.push_back(b1);


Вылетает ошибка
 
Код:
E2459 VCL style classes must be constructed using operator new
53K
25 июня 2010 года
FunTime
16 / / 23.06.2010
Понял ошибку

 
Код:
list<TButton> Buttons;
TButton *b1 = new TButton(this);
b1->Parent = Form1;
Buttons.push_back(*b1);

Кнопка на форме появляется, но при добавлении, вылетает Exception
 
Код:
exception class EAccessViolation with message 'Access violation at address 00405ED2'...
53K
25 июня 2010 года
FunTime
16 / / 23.06.2010
Разобрался. Проблема решена.
 
Код:
list<TButton*> Buttons;
TButton *b1 = new TButton(this);
b1->Parent = Form1;
Buttons.push_back(b1);

Только я всё таки не очень понимаю почему надо писать
list<TButton*> Buttons;
кто-то может подробнее объяснить или подкинуть литературы?
332
25 июня 2010 года
Valiant
416 / / 27.09.2004
Цитата: Norgat



А этого не достаточно?

14
25 июня 2010 года
Phodopus
3.3K / / 19.06.2008
Цитата: FunTime

Только я всё таки не очень понимаю почему надо писать
list<TButton*> Buttons;
кто-то может подробнее объяснить или подкинуть литературы?


потому что

Цитата:

E2459 VCL style classes must be constructed using operator new


а вы это правило пытаетесь нарушить. Это ограничение Borland VCL.
Так тоже нельзя:

 
Код:
...
{
  TButton mybtn1(this);
  ...
}
2.1K
25 июня 2010 года
Norgat
452 / / 12.08.2009
Цитата: FunTime
Разобрался. Проблема решена.
 
Код:
list<TButton*> Buttons;
TButton *b1 = new TButton(this);
b1->Parent = Form1;
Buttons.push_back(b1);

Только я всё таки не очень понимаю почему надо писать
list<TButton*> Buttons;
кто-то может подробнее объяснить или подкинуть литературы?



потому что TButton - это класс, а TButton* - указатель на класс TButton.

Вам бы для начала нужно понять что такое указатели, ссылки и т.д., а потом уже браться за динамические структуры данных.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог