anonymous
написал 15 мая 2005 года в 13:31 (1839 просмотров)
Ведет себя
неопределенно; открыл 1814 темы в форуме, оставил 5575 комментариев на сайте.
Всем доброго времени суток… Такой вот вопрос:
Вот структура упорядоченной таблицы:
struct Node {
int key;
Item *info;
};
struct Item {
int release;
char *string;
Item *next;
};
В таблице 2 столбца, в первом содержится ключ, во втором содержится указатель на информацию (на список), в списке содержится версия, информация и указатель на следующий элемент списка. В таблице могут содержаться элементы с одинаковыми ключами, но разными версиями… Так вот, вопрос: Как создать такую таблицу, если заранее известно количество записей в таблице и как потом такую таблицу удалить???
Заранее огромное спасибо!
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
ecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.
std:map + std:vector
И что это такое?
STL (standard template library), которая с со стандарта 1998 г. является обязательной составной частью всякого С++ (если он хочет так называться ;)).
P.S. Лучшая книжка об этом — вот эта:
http://qnx.org.ru/viewthread12n1002.html
Моя версия:
—
class Item{
public:
int release;
char *string;
Item *next;
};
class Node{
public:
int key;
Item *Info;
};
class Table{
public:
Table(int);
~Table();
Node *rowz;
};
Table::Table(int rowz_n){
rowz = new Node[rowz_n];
}
Table::~Table(){
delete rowz;
}
—
После этого можно создавать таблицу:
—
Table *table1;
table1 = new Table (кол-во_строк);
—
Удаляется таблица так:
—
delete table1;
—
Улучшенный вариант:
—
struct Item{
int release;
char *string;
Item *next;
};
struct Node{
int key;
Item Info;
};
class Table{
public:
Table(int);
~Table();
void set_key(int indx, int key_data){rowz[indx].key = key_data;}
int get_key(int indx){return rowz[indx].key;}
void set_item_release(int indx, int ir_data){rowz[indx].Info.release=ir_data;}
int get_item_release(int indx){return rowz[indx].Info.release;}
void set_item_string(int indx, char *str_data){rowz[indx].Info.string=str_data;}
char *get_item_string(int indx){return rowz[indx].Info.string;}
private:
Node *rowz;
};
Table::Table(int rowz_n){
rowz = new Node[rowz_n];
}
Table::~Table(){
delete rowz;
}
—
Очень грубая ошибка. Надо:
Кроме того рекомендую посмотреть в сторону «умных» указателей и использовать string вместо Си образных строк в случае с Си++.
итераторы рулят.
PS
не изобретай велосипед, а?