Welcome Guest ( Log In | Register )

Help | Search | Members | Calendar

 
Generic containers in C
« Next Oldest | Next Newest » Track this topic | Email this topic | Print this topic
Master of Puppets
Posted: Mar 8 2010, 00:23

Eye of the Vision

Group: Moderator
Member No.: 2067

Joined: August 29, 2006

Привет!

В общем тут такое дело, программа пишется на языке C и возникла необходимость использовать некоторые классические структуры данных (очередь, например). Я начал было писать ее ручками, но как-то заело ощущение, что трачу драгоценное время на изобретение колеса, вместо того чтоб решать основную задачу. Нет ли какой-нибудь более-менее общепринятой библиотеки наподобие STL, но для C? Заранее спасибо.

--------------------
Master of Puppets, I'm pulling your strings, twisting your mind and smashing your dreams!
⠠⠵
 
       Top
1nsidE
Posted: Mar 8 2010, 18:54

Word Thrower

Group: Member
Member No.: 3409

Joined: June 30, 2009

более менее общепринятая это Стандартная библиотека C
Специальных библиотек для работы со структурами данных для си как-то не видел...да и както непонятно что они должно делать?какбы свои типы создавать нельзя,структуры определить не сложно,а функ -и писать для работы со структурами,какбы эээ....не будет универсально чтоле.
 
     Top
Master of Puppets
Posted: Mar 8 2010, 22:32

Eye of the Vision

Group: Moderator
Member No.: 2067

Joined: August 29, 2006

QUOTE (In the immortal words of 1nsidE, since Mar 8 2010, 18:54...)
более менее общепринятая это Стандартная библиотека C
Специальных библиотек для работы со структурами данных для си как-то не видел...да и както непонятно что они должно делать?какбы свои типы создавать нельзя,структуры определить не сложно,а функ -и писать для работы со структурами,какбы эээ....не будет универсально чтоле.

1. Делать они должны то же самое, что и остальные подобные библиотеки - предоставлять набор стандартных структур данных, в которых пользователь мог бы хранить что пожелает. И создать подобный generic-контейнер средствами C в принципе не так сложно - можно определить его с помощью препроцессора (как здесь, например) либо просто держать void-указатель на хранимые данные.
2. Кто сказал, что свои типы создавать нельзя? Когда пишешь struct - ты не создаешь тип?
3. Для работы со своими элементами контейнеры могут использовать указатели на пользовательские функции, так что с универсальностью проблем не возникнет smile.gif

--------------------
Master of Puppets, I'm pulling your strings, twisting your mind and smashing your dreams!
⠠⠵
 
       Top
1nsidE
Posted: Mar 8 2010, 22:43

Word Thrower

Group: Member
Member No.: 3409

Joined: June 30, 2009

QUOTE
Делать они должны то же самое, что и остальные подобные библиотеки - предоставлять набор стандартных структур данных, в которых пользователь мог бы хранить что пожелает.

да это и так понятно....

QUOTE
можно определить его с помощью препроцессора (как здесь, например)

омг

QUOTE
2. Кто сказал, что свои типы создавать нельзя? Когда пишешь struct - ты не создаешь тип?

я думал ты поймешь что я имел ввиду классы( обьекты ).

QUOTE
3. Для работы со своими элементами контейнеры могут использовать указатели на пользовательские функции, так что с универсальностью проблем не возникнет

из ряда, не мытьем так катанием,или по другому каллбэк функ -и это решение через жопу,и юзают его потому что в си( не тока в си ) лучше не сделаешь( не надо утрировать )
 
     Top
Master of Puppets
Posted: Mar 8 2010, 23:00

Eye of the Vision

Group: Moderator
Member No.: 2067

Joined: August 29, 2006

QUOTE (In the immortal words of 1nsidE, since Mar 8 2010, 22:43)
я думал ты поймешь что я имел ввиду классы( обьекты ).


из ряда, не мытьем так катанием,или по другому каллбэк функ -и это решение через жопу,и юзают его потому что в си( не тока в си ) лучше не сделаешь( не надо утрировать )

Ну тогда надо быть аккуратнее с терминологией ) Но опять же, кто сказал, что в Си нельзя создавать классы? Отсутсвие ключевого слова class еще ничего не означает smile.gif Отсюда можно узнать много нового.

И наконец, почему это использование колбэков - "через жопу"? Это подход, вполне имеющий право на жизнь, он часто используется в проектировании софта.

--------------------
Master of Puppets, I'm pulling your strings, twisting your mind and smashing your dreams!
⠠⠵
 
       Top
1nsidE
Posted: Mar 8 2010, 23:21

Word Thrower

Group: Member
Member No.: 3409

Joined: June 30, 2009

да знаю я то в си можно создать класс,не вчера родился,тока этот язык функционального программирования,короче там классы будут через жопу )),думаю тебе это и так понятно.

а не говорю каллбек не имеет право жить,и часто юзается,но только не в ооп системах,где это реализовано например через наследование,однако есть задачи где не обойтись без каллбеков( ну или нужно делать вобще через жопу ),первое каллбек это подобие черного ящика,типа ты давай аргументы,плюс ук. на функ -ию,а я ее буду вызывать,а это уже принципы ооп,и когда ооп юзается в функциональном языке,получаетсо,что-то типа,юзать ногу место руки....,второе каллбек нарушает структурированность кода,какбы смахивает чемто на goto,есть еще причны тока с ходу их вспомнить немного сложно.
 
     Top
nop
Posted: Mar 9 2010, 00:30

Wise Dreamer

Group: Elite Member
Member No.: 3143

Joined: July 2, 2008

QUOTE
функционального

процедурного smile.gif
А вообще goto очень хорошая вещь...

Насчет библиотеки, впервые слышу, надо покопать. Интересно почему прога пишется именно на С?

--------------------
- Но это же противоречит здравому смыслу
- А что такое здравый смысл? - спросил
Путешественник во Времени.
 
     Top
Master of Puppets
Posted: Mar 9 2010, 00:36

Eye of the Vision

Group: Moderator
Member No.: 2067

Joined: August 29, 2006

QUOTE (In the immortal words of nop, since Mar 9 2010, 00:30)
процедурного smile.gif
А вообще goto очень хорошая вещь...

Насчет библиотеки, впервые слышу, надо покопать. Интересно почему прога пишется именно на С?

Для тренировки - хочу научиться писать на C, мало ли что, может пригодиться.

--------------------
Master of Puppets, I'm pulling your strings, twisting your mind and smashing your dreams!
⠠⠵
 
       Top
1nsidE
Posted: Mar 9 2010, 01:27

Word Thrower

Group: Member
Member No.: 3409

Joined: June 30, 2009

QUOTE
да знаю я то в си можно создать класс

может показаться что я противоречу самому себе,однако я иммел ввиду ооп кодинг в си,который я не отрицал smile.gif

единственая задача в которой goto реально нужен,так это выход из вложенных циклов,про другие я не знаю.
 
     Top
knightmare
Posted: Mar 9 2010, 02:03

Wise Dreamer

Group: Elite Member
Member No.: 1572

Joined: October 31, 2005

QUOTE (In the immortal words of Master of Puppets, since Mar 9 2010, 00:36)
Для тренировки - хочу научиться писать на C, мало ли что, может пригодиться.

ну так и пиши, реализовывай эти структуры данных и алгоритмы smile.gif

--------------------
армия - эта крута, армейский спецназ - эта ваще крута


Хочу трахнуть Nissan Skyline R34, и ездить на Alessandra Ambrosio
 
    Top
AvDav
Posted: Mar 9 2010, 04:49

Incomer

Group: Member
Member No.: 1824

Joined: May 14, 2006

Первый результат поиска в гугле, меня привел сюда http://home.gna.org/gdsl/, весьма многообещающая библиотека. Хотя если цель - набрать С-стайл икспиреинс, то лучше писать самому, первые блины возможно выйдут комом.
 
    Top
nop
Posted: Mar 9 2010, 14:06

Wise Dreamer

Group: Elite Member
Member No.: 3143

Joined: July 2, 2008

QUOTE
единственая задача в которой goto реально нужен,так это выход из вложенных циклов,про другие я не знаю.

Так я об этом и говорю smile.gif Очень эффективный метод, а на "красоту" кода нах не влияет! (для меня даже красивее)
QUOTE
Для тренировки - хочу научиться писать на C, мало ли что, может пригодиться.

QUOTE
ну так и пиши, реализовывай эти структуры данных и алгоритмы smile.gif

smile.gif

--------------------
- Но это же противоречит здравому смыслу
- А что такое здравый смысл? - спросил
Путешественник во Времени.
 
     Top
Master of Puppets
Posted: Mar 9 2010, 14:36

Eye of the Vision

Group: Moderator
Member No.: 2067

Joined: August 29, 2006

QUOTE (In the immortal words of nop, since Mar 9 2010, 14:06)
Так я об этом и говорю smile.gif Очень эффективный метод, а на "красоту" кода нах не влияет! (для меня даже красивее)

Если вложенные циклы достигли такого уровня вложенности, что для выхода из них нужен goto, то по программе плачет рефакторинг smile.gif

QUOTE

If you need more than 3 levels of indentation, you're screwed anyway, and should fix your program


--------------------
Master of Puppets, I'm pulling your strings, twisting your mind and smashing your dreams!
⠠⠵
 
       Top
Master of Puppets
Posted: Mar 9 2010, 14:37

Eye of the Vision

Group: Moderator
Member No.: 2067

Joined: August 29, 2006

QUOTE (In the immortal words of AvDav, since Mar 9 2010, 04:49)
Первый результат поиска в гугле, меня привел сюда http://home.gna.org/gdsl/, весьма многообещающая библиотека. Хотя если цель - набрать С-стайл икспиреинс, то лучше писать самому, первые блины возможно выйдут комом.

Спасибо за ссылку! Посмотрел их исходники, почерпнул полезную информацию.

--------------------
Master of Puppets, I'm pulling your strings, twisting your mind and smashing your dreams!
⠠⠵
 
       Top
nop
Posted: Mar 9 2010, 17:04

Wise Dreamer

Group: Elite Member
Member No.: 3143

Joined: July 2, 2008

QUOTE (In the immortal words of Master of Puppets, since Mar 9 2010, 15:36...)
Если вложенные циклы достигли такого уровня вложенности, что для выхода из них  нужен goto, то по программе плачет рефакторинг smile.gif

Не обьязательно, чтоб уровень был больше...Но учитывая способности оптимизации кода сегодняшних копмиляторов, можно сказать что Goto не нужен. Хотя сам я очень люблю ее smile.gif
QUOTE

If you need more than 3 levels of indentation, you're screwed anyway, and should fix your program

Ага, если не используется например 4х мерный массив...

--------------------
- Но это же противоречит здравому смыслу
- А что такое здравый смысл? - спросил
Путешественник во Времени.
 
     Top
14 replies since Mar 8 2010, 00:23 Track this topic | Email this topic | Print this topic

<< Back to Programming languages

 




Arminco Global Telecommunications