![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
два разных языка программирования - с и с++, почему если есть в с++, то должно быть в с? нету ничего и не может быть, так как нет средств в с для создания таких вещей как vector. |
|||
|
||||
Anton Vatchenko |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 21.5.2004 Репутация: нет Всего: -1 |
Насколько я понимаю, реаллок заново выделяет память и переносит старые данные на новое место. Мне нужен принцип быстрой работы как в Векторе - я добавляю один элемент, но в памяти добавляется небольшой кусок, и связывается по ссылкам с соседними, а не копируется тупо весь массив...
То есть цикл: Array array; int i; for(i = 0; i < 1000; i++) { if(needInsert(i)) arrayAdd(&array, i); } работал быстро... |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Ты видимо даже не знаешь, как работает vector и чем он отличается от list. Так вот, вектор в простейшем случае работает, как realloc (а точнее, так, как я описал на той странице), а вот list (двусвязный список) работает так, как ты написал. Кстати, к элементам list ты не можешь обращаться по индексу. Только через "итераторы" (указатели). Это сообщение отредактировал(а) bsa - 4.12.2007, 17:02 |
|||
|
||||
Anton Vatchenko |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 21.5.2004 Репутация: нет Всего: -1 |
>> нету ничего и не может быть, так как нет средств в с для создания таких вещей как vector
Что значит не может быть? В Си никто не смог сделать компонент типа Вектор? Я на си писал такое, но хотел бы получить не корявый вариант... То есть функции типа: listAdd(List *list, void *data); listRemove(List *list, int position); listInsert(List *list, void *data, int position); И пусть меня никто не смешит, что это невозможно сделать, так как мы это делали еще в школе на информатике. Делали односторонние, двухсторонние списки, очереди, стеки, и т. д. |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
vector != list Нельзя на Си сделать такой компонент. Просто потому, что в Си нет шаблонов! А для каждого из стандартных типов будет недостаточно. |
|||
|
||||
Anton Vatchenko |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 21.5.2004 Репутация: нет Всего: -1 |
Да я ж не про шаблоны спрашивал, а про обычные динамические массивы, списки...
Это сообщение отредактировал(а) Anton Vatchenko - 4.12.2007, 17:32 |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Anton Vatchenko, хорошо. тогда скажи, как ты представляешь стандарный список, который будет работать со struct mystruct?
|
|||
|
||||
Anton Vatchenko |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 21.5.2004 Репутация: нет Всего: -1 |
Этот список должен работать с ней, как с void*, как это часто и делается, если нет шаблонов...
|
|||
|
||||
orthrus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 400 Регистрация: 30.10.2007 Где: г. Усть-Илимск(Ир кутская обл.) Репутация: нет Всего: 16 |
Может быть тебе подойдет функционал библиотеки glib? Списки, очереди, динамическии массивы (garray что то вроде вектора) и еще куча всякой всячины там есть.
-------------------- У того, кто ничего не делает, всегда много помощников.© Л.Н. Толстой ![]() |
|||
|
||||
Anton Vatchenko |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 21.5.2004 Репутация: нет Всего: -1 |
glib очень массивная библиотека...
|
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
это не аргумент от неё отказываться. а ядро вообще весит до фига... давайте без него, да? ![]() |
|||
|
||||
Random13 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 21.11.2007 Репутация: нет Всего: нет |
На С++ есть тэмплейтовские вектора и т.д. на С нужно писать все самому, думаю на С++ они так и имплементированы посредством маллока и реаллока.
А что за потребность писать на С, а не на С++ - работаешь с проектом уже написанный на С ? |
|||
|
||||
onsql |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 3.12.2007 Репутация: нет Всего: 3 |
А вот такое подойдёт- sglib ? Прямо почти что темплейты на си ![]() |
|||
|
||||
Anton Vatchenko |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 21.5.2004 Репутация: нет Всего: -1 |
Отвечу на все вопросы... Работаю на Си, потому как на линуксе на слабом компьютере, люблю Си больше С++... И поэтому подключение любых дополнительных библиотек приведет к "ужасным" последствиям.. Я думал, что есть функции типа printf и прочих, которые уже содержатся в ядре, если не ошибаюсь...
Может тогда кто-то подскажет где найти один си-файл, чтобы подключить к своему проекту, где хорошо реализован динамический массив... Достаточны функции типа add, remove, insert, next, prev, first... |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |