![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Aline |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 470 Регистрация: 22.7.2005 Где: Таруса Репутация: нет Всего: нет |
Необходимо реализовать разреженный массив. На просторах инета нашла пример, как это можно сделать http://www.galaxy797.net/c/shildt/23/2302.htm . Структура данных у меня можно сказать такая же как и в пример: поле ID - массив из 9 байтов ( значения 3-х индексов будут передоваться: 1-й индекс это 1-4 байт, 2-й индекс 5-8 байт и 3-й индекс - это 9-й байт), поле данных в виде массива из 120 байт, ну и ссылка на следующий элемент списка.
Перенесла всё это себе в проект. И тут посыпались ошибки :( Вернее 2 процедуры пока нормально перенеслись, но я к ним еще не обращалась из программы:
В процедуре insert_data есть сомнения,что правильно написана строка if (p->ID == i->ID), наверное надо сравнивать по каждому элементу,раз это массив А вот в этой функции сразу выскочили ошибки, она вызывается из процедуры delete_data
А вот объявление класса:
В общем,я запуталась и очень прошу вашей помощи... В приложении исходник и header Это сообщение отредактировал(а) Aline - 5.6.2013, 15:05 Присоединённый файл ( Кол-во скачиваний: 2 )
Projects.rar 1,49 Kb |
||||||
|
|||||||
| Guinness |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 310 Регистрация: 21.6.2009 Где: Зеленоград Репутация: нет Всего: 10 |
Я так понимаю Вам по ближе к Си нужно. Я бы ID сделал структурой, по типу этого:
К ней допишите необходимые функции. Далее по afdx:
Data - лучше сделать std::vector<BYTE>. Если, конечно, нет острой необходимости в контейнере Си. Указатели лучше уберем. Вместо этого лучше использовать std::list<afdx> или другой, подходящий Вам контейнер. Так вот, если это все дело мы храним в контейнерах, то написание всяких "чудо-функций" нам не особо и нужно. Достаточно посмотреть algorithms. Надеюсь, там Вы найдете большинство аналогов того, что Вы хотите сделать. Это сообщение отредактировал(а) Guinness - 5.6.2013, 15:45 |
||||
|
|||||
| Aline |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 470 Регистрация: 22.7.2005 Где: Таруса Репутация: нет Всего: нет |
Guinness, спасибо! Гляну. Где то видела примеры с вектором, встречались. Просто я с этим ни разу не сталкивалась, новое для меня. Необходимо реализовать разреженный массив данных, тэо было самое простое и первое,что я нашла
Добавлено через 3 минуты и 30 секунд Guinness, а как Вам это? http://cppbuilder.ru/articles/0038.php Мне кажется это понятнее, хотя бы потому,что описание на русском:) Добавлено через 6 минут и 3 секунды Guinness, что я посмотрела и вообще ничего не поняла :( с указателями мне как то понятней |
|||
|
||||
| Guinness |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 310 Регистрация: 21.6.2009 Где: Зеленоград Репутация: нет Всего: 10 |
А что не понятно? Лучше понять, а то есть немалый шанс понапридумывать велосипедов. ЗЫ пример взят из данной книжки? ссылка ЗЗЫ а зачем Вам вообще разреженный массив? Это сообщение отредактировал(а) Guinness - 5.6.2013, 16:01 |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
std::map - практически готовый разряженный массив.
|
|||
|
||||
| Aline |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 470 Регистрация: 22.7.2005 Где: Таруса Репутация: нет Всего: нет |
Guinness, да, ссылка из того учебника
Массив нужен для тго,чтобы память экономит и данные будут разбросаны (ну по крайней мере я так поняла volatile, спасибо, посмотрю |
|||
|
||||
| Aline |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 470 Регистрация: 22.7.2005 Где: Таруса Репутация: нет Всего: нет |
volatile, А Вы могли бы привести пример для моего случая?
Я с помощью typedef определила :
Как оказалось данных всё таки 1500 байт приходит. Далее объявила:
Затем заполнила массивы key и data данными. И пытаюсь их связать:
Здесь выдает ошибку. Что неправильно и как сделать правильно? Или надо vector использовать для key и data? |
||||||
|
|||||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
||||
|
||||
| Aline |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 470 Регистрация: 22.7.2005 Где: Таруса Репутация: нет Всего: нет |
xvr, чем дальше в лес, тем больше дров...
и как этим пользоваться в дальнейшем? |
|||
|
||||
| xvr |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Так же, как и вашим оригинальным typedef'ом:
Если из массива, то так же, как и ваш typedef (плюс лишние скобочки) -
|
||||||
|
|||||||
| Aline |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 470 Регистрация: 22.7.2005 Где: Таруса Репутация: нет Всего: нет |
xvr, сейчас попробую,но что то для меня это темный лес совершенно :(
А структуру только для key надо делать? Добавлено @ 10:50 При написании этого:
а затем этого: компилятор выдал 44 ошибки... Это сообщение отредактировал(а) Aline - 6.6.2013, 10:50 |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
||||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
Aline, простые массивы в С/С++ - это такие не очень полноценные типы. их невозможно копировать, сравнивать и т.д. (операторами =, <), а это необходимо для мапа Лучше использовать вектор, вместо них. typedef std::vector <byte> Key_type; Либо, если размер фиксирован, можно обернуть в структуру, в последнем случае нужно будет написать еще оператор< Вот простейший пример:
Добавлено через 1 минуту и 42 секунды упс.., несколько последних сообщений не видел. |
|||
|
||||
| Aline |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 470 Регистрация: 22.7.2005 Где: Таруса Репутация: нет Всего: нет |
xvr
вот к примеру: [bcc32 Error] xtree(36): E2450 Undefined structure 'pair<const Key_type,unsigned char[1500]>' Full parser context Это сообщение отредактировал(а) Aline - 6.6.2013, 12:22 |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
||||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |