Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Списки в С++

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> Списки в С++
Имя
Сообщение << Старые топики   Новые топики >>
Списки в С++ - 2007-12-21 20:10:29.546666   
Genco

Сообщений: 1662
Оценки: 90
Присоединился: 2007-12-16 23:11:22.003333
Прям стыдно такое спрашивать.В Делфи списки делать умею,хелп и всё что надо читал,с С++ разобрался. Но не пашут никак((.  New() тут какое-то странное,а переписанный под С++ код из делфы не пашет.Плиз,простейший вариант покажите токо(заполнить-вывести).И пожалуйста не шлите "погуглить".
Post #: 1
RE: Списки в С++ - 2007-12-21 20:28:14.240000   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
#include &lt;iostream&gt; #include &lt;list&gt; using namespace std; int main (int argc, char *argv[]) { list&lt;char*&gt; arg_list; while (*argv) arg_list.push_back (*(argv ++)); list&lt;char*&gt;::iterator iter = arg_list.begin (); for (; iter != arg_list.end (); iter ++) cout &lt;&lt; *iter &lt;&lt; endl; return 0; }
Post #: 2
RE: Списки в С++ - 2007-12-21 20:59:50.300000   
Genco

Сообщений: 1662
Оценки: 90
Присоединился: 2007-12-16 23:11:22.003333
 О! Пасиба! пригодится. Токо можна мне простейший самодельный вариант: тип данных "списки",через структуры,с динам. памятью. Ну,например,чтоб числа/строки/чё-нить запоминалось. (Они,вроде,ещё однонаправленные и двунаправленные бывают). Я не про((.
Post #: 3
RE: Списки в С++ - 2007-12-21 22:59:09.250000   
Mystic.asm

Сообщений: 53
Оценки: 0
Присоединился: 2007-06-17 18:19:29.466666
Стандартный list двусвязный вроде. Не пойму, почему нельзя использовать его. Но и так ничего трудного нету. Вот пример для целых чисел в списке:
struct item{
item(int n):n(n), next(0), prev(0){}
int n;
list* next;
list* prev;
};
class list{
public:
list():header(0){}
add(int n){
  if(header == 0){
    header = new item(n);
    return;
  }
  item* temp = header;
  while(temp->next != NULL)
    temp = temp->next;
  temp->next = new item(n);
  temp->next->prev = temp;
}
private:
item* header;
};
пример демонстративный, может содержать ошибки и не полный (реализована только одна функция).
Post #: 4
RE: Списки в С++ - 2007-12-21 23:11:52.333333   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
quote:

ORIGINAL: Genco
Они,вроде,ещё однонаправленные и двунаправленные бывают

это животные бывают однопроходными и двупроходными, мы принадлежим ко вторым, а первые сэкономили на жопе и срут через рот. :)
списки же односвязные и двусвязные.
Post #: 5
RE: Списки в С++ - 2007-12-22 21:09:22.570000   
redsh

Сообщений: 338
Оценки: 0
Присоединился: 2007-06-17 22:35:25.540000
quote:

add(int n){ if(header == 0) { header = new item(n); return; } item* temp = header; while(temp-&gt;next != NULL) temp = temp-&gt;next; temp-&gt;next = new item(n); temp-&gt;next-&gt;prev = temp; }

ужос!

for(item **p = &list; *p; p = &((*p)-&gt;next) ; *p = (list*)malloc(sizeof(list)); (*p)-&gt;n = blablabla; (*p)-&gt;next = NULL;
Post #: 6
RE: Списки в С++ - 2007-12-23 00:40:39.480000   
Mystic.asm

Сообщений: 53
Оценки: 0
Присоединился: 2007-06-17 18:19:29.466666
Ну вообще-то лучше все-таки пользоваться оператором new (это все-таки не С, здесь более высокий уровень). Да и по демонстративности моя программа более понятна, основной целью я ставил хоть какую-то понятность.
Post #: 7
RE: Списки в С++ - 2007-12-23 19:26:36.910000   
Genco

Сообщений: 1662
Оценки: 90
Присоединился: 2007-12-16 23:11:22.003333
Мне,кстати,именно с new и надо было.) А в хелпе баг - для С и С++ - разное описание работы функций.Ща вроде догнал.
Кстати,если не сложно, просветите: что есть "<list>"? Читал,читал-фигня какая то! Как юзать-то?
Post #: 8
RE: Списки в С++ - 2007-12-24 00:52:11.950000   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
quote:

ORIGINAL: Genco

Мне,кстати,именно с new и надо было.) А в хелпе баг - для С и С++ - разное описание работы функций.Ща вроде догнал.
Кстати,если не сложно, просветите: что есть "&lt;list&gt;"? Читал,читал-фигня какая то! Как юзать-то?

может ты имел в виду list<char*> ?
макроподстановка. есть такая фигня в c++ как template, который по сути своей способ создания макросов. и есть STL – стандартная библиотека этих самых template'ов, которая позволяет генерить макроподстановками стандартные типы и стандартные алгоритмы. #include<list> – это как раз подключение заголовочного файла той самой STL. В данном случае я сгенерил тип, который вкратце можно описать так: "список, элементы которого помимо стандартных полей-указателей next и prev (возможно ещё каких-то полей, используемых для реализации списка), содержит поле с типом char*".
Post #: 9
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> Списки в С++







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.