![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
KIDD |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 19.3.2004 Репутация: 1 Всего: 1 |
Товарищи, помогите!
Как выделить динамически двумерный массив у которого я знаю количество столбцов, а количество строк в процессе может быть любым, либо как можно реализовать иначе такой массив. ** ** ** ** ** ** ... ... И еще похожий вопрос: Как выделить динамически двумерный массив, у которого в процессе работы может вырьироваться количество столбцов, а количество строк также не предсказуемо. **... ****... **... ****... **... ... Заранее спасибо |
|||
|
||||
chipset |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 165 |
массив обьектов типа vertex
Добавлено @ 07:04 тьфу! массив обьектов типа vector ![]() Это сообщение отредактировал(а) chipset - 18.5.2004, 07:05 --------------------
|
|||
|
||||
dargaard |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 450 Регистрация: 7.5.2004 Репутация: 4 Всего: 25 |
В C
СУВ. -------------------- Ты должна сделать добро из зла потому что его больше не из чего сделать. Р.П.Уоррен |
|||
|
||||
chipset |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 165 |
второй вопрос, засунуть в качестве темплейта vector'y "vector". а у каждого "строчного" vector'a пусть будет обьекты X
сейчас dargaard ответит без использования С++ и вопрос будет полностью решен ![]() Это сообщение отредактировал(а) chipset - 18.5.2004, 07:11 --------------------
|
|||
|
||||
dargaard |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 450 Регистрация: 7.5.2004 Репутация: 4 Всего: 25 |
chipset
злой ты ![]() -------------------- Ты должна сделать добро из зла потому что его больше не из чего сделать. Р.П.Уоррен |
|||
|
||||
chipset |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 165 |
нет я очень добрый, просто немного усталый...
![]() голова кипит, видишь векторы с вертексами путаю... --------------------
|
|||
|
||||
AndyY |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 316 Регистрация: 8.5.2004 Где: СПб Репутация: 2 Всего: 4 |
для случая неопределенного кол-ва строк - согласен, хорошо будет список указателей.
Для варианта, когда нет данных о столбцах и о строках, (тем более когда их число может изменятся во время работы программы): сложить все данные в map (самобалансирующеесе дерево, ключ - координаты). Если данных много, а накладные расходы байт по 8 на элемент высоки, то в map сложить небольшие куски (скажем, по 10*10 элементов) Но все это имеет смысл только при достаточно больших массивах данных. |
|||
|
||||
gepard |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2477 Регистрация: 29.2.2004 Репутация: 2 Всего: 40 |
Зайти в FAQ по С++, там есть вопрос про динам. массивы.
-------------------- Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным! © Я, Берсерк, что значит - Неистовый. |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
Можно и без векторов обойтись, если хранить размер массива на 4 байта раньше его начала. В Delphi есть очень удобные функции для работы с массивами (GetMem, FreeMem, Copy и пр.), и именно так они и реализованы. Вот переделанный вариант под С++, и пример -- как можно выделить и работать с массивом, в котором не известно ни количество строк, ни размер каждой отдельной строки:
-------------------- ![]() |
|||
|
||||
Neo |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 5.5.2004 Репутация: нет Всего: нет |
Вот нам как раз на лекции такой пример давали, когда сведения о количестве строк и столбцов удобно хранить в нескольких байтах перед началом массива. Крайне удобно. Может кому понадобится такой исходник....
Собственно отличия от исходника mr.DUDA никакого. Формально, как я понимаю. Разве что пара функций, которые определяют длину строки или столбца.... Это сообщение отредактировал(а) Neo - 20.5.2004, 01:01 |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
...и привязка к типу данных double (а у меня все функции - шаблоны, можно хранить в массивах произв. данные) -------------------- ![]() |
|||
|
||||
KIDD |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 19.3.2004 Репутация: 1 Всего: 1 |
А я похоже более легкий выход нашел, халявный правда, но выход : В Visual есть такой класс CArray ( и его производные - CObArray,CIntArray...), создав объект которого, можно в него загонять свои данные, причем цивильно, с помощью специальных функций.
Спасибо за ответы, всем!!! |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
Лёгкий путь не всегда самый верный. Насчёт CArray: я ещё год назад считал MFC'шные контейнеры удобными и самыми лучшими ![]() http://forum.vingrad.ru/index.php?showtopic=16860 -------------------- ![]() |
|||
|
||||
KIDD |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 19.3.2004 Репутация: 1 Всего: 1 |
mr. DUDA!
Меня интересует, можно ли в vector запихать свой объект.
А чем плохи СArray и кампания? У меня ксати возникли с ними проблемы: Вроде все правильно делаю
А Выдает ошибку:
???????? |
||||||
|
|||||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
KIDD, отвечаю по порядку:
1) запихать в вектор свой объект можно, подробности - в статье в FAQ 2) CArray и компания плохи тем, что: а) тормознутые по сравнению с STL, б) привязаны к MFC, в) неудобные в использовании (один только POSITION чего стоит ![]() г) кроме CList, CArray и CMap в MFC больше ничего нету ! д) мелкософт сама отказалась от своих контейнеров (как и от MFC в целом) и стала продвигать собственные "расширения" STL - класс hash_map, например е) в Инете можно найти кучу разных вариантов STL (с одним синтаксисом, но разной реализацией), и некоторые из них внутри себя супер-навёрнутые и быстродействующие - например, STLPort 3) чтобы твой пример с CArray скомпилился, нужно добавить в класс CMyPoint реализацию конструктора копирования либо оператора "=". А если пользоваться vector, то таких проблем нету ! Кстати, конструктор копирования в MFC-шных контейнерах - эта проблема когда-то возникла и у меня, и необходимость "руками" прописывать присвоения всех по порядку полей одного объекта полям другого - просто бесила... -------------------- ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |