![]() |
|
Модераторы: bsa |
![]()
|
|
| victor79 |
|
|||
|
программист ![]() Профиль Группа: Участник Сообщений: 211 Регистрация: 15.5.2008 Репутация: нет Всего: нет |
как узнать сколько было выделено элементов через new type[cnt],
стандартные методы существуют? или не стандартные для mingw? |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
victor79, стандартных точно нет. В существовании нестандартных тоже сомневаюсь...
Если type - это твой класс, то можешь в него добавить статический счетчик, а в конструкторе увеличивать его на 1. Другие способы мне неизвестны. |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
||||
|
||||
| victor79 |
|
||||
|
программист ![]() Профиль Группа: Участник Сообщений: 211 Регистрация: 15.5.2008 Репутация: нет Всего: нет |
>зачем это нужно
что бы не сохранять размерность векторов в отдельной переменной. Ну если нельзя, так нельзя. Против компилятора не попрешь. Добавлено через 11 минут и 42 секунды пусть будет класс
и есть класс
конейнер должен содержит вектор созданный через new - для экономии памяти, чаще он не выделяется, чем выделяется, а объектов контейнеров очень много. И исходя из того, что Vector* есть указатель, то уже нельзя воспользоваться оператором [] так что бы было красиво: cntr.vect[idx] - нельзя, нужно (*cntr.vect)[idx]. А если делать cntr.vect = new Type[cnt] (без дополнительного класса Vector), то уже негде запоминать размерность выделенного вектора, но зато можно написать cntr.vect[idx] |
||||
|
|||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 6 Всего: 118 |
перегрузить new ?
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
victor79, может проще воспользоваться стандартным шаблоном std::vector?
|
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
Прежде всего Вы уверены, что Вам именно такая конструкция необходима ?
интересно что Вы этим сэкономите. Сами даные вектор и так хранит в куче, а из остального только указатель на данные и переменная размера. Но можно перегрузить к примеру operator [] для Contаiner и использовать cntr[idx], а не cntr.vect[idx] Вобщем чего то Вы тут перемудрили . Это сообщение отредактировал(а) mes - 30.12.2008, 19:28 |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |