Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Какие есть динамические массивы в Си? 
:(
    Опции темы
Anton Vatchenko
Дата 4.12.2007, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 21.5.2004

Репутация: нет
Всего: -1



Привык писать на С++ под винду, а тут не знаю как...


--------------------
user posted image
PM MAIL   Вверх
bsa
Дата 4.12.2007, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Anton Vatchenko, точно также:
#include <vector>
std::vector
#include <map>
std::map
#include <list>
std::list
#include <set>
std::set

да и malloc/calloc/realloc/free тоже имеются

Это сообщение отредактировал(а) bsa - 4.12.2007, 15:31
PM   Вверх
Fazil6
Дата 4.12.2007, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



Цитата(bsa @  4.12.2007,  15:31 Найти цитируемый пост)
#include <vector>
std::vector
#include <map>
std::map
#include <list>
std::list
#include <set>
std::set


в Си  smile ?
PM MAIL   Вверх
Lazin
Дата 4.12.2007, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



в си есть realloc и указатели))
PM MAIL Skype GTalk   Вверх
Anton Vatchenko
Дата 4.12.2007, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 21.5.2004

Репутация: нет
Всего: -1



Нет, а по принципу vector и прочие?


--------------------
user posted image
PM MAIL   Вверх
Fazil6
Дата 4.12.2007, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



Цитата(Anton Vatchenko @  4.12.2007,  15:55 Найти цитируемый пост)
Нет, а по принципу vector и прочие?

нету
PM MAIL   Вверх
zkv
Дата 4.12.2007, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 26
Всего: 92



Цитата(Anton Vatchenko @  4.12.2007,  15:55 Найти цитируемый пост)
Нет, а по принципу vector и прочие? 

дык определись, с или с++?
Просто в с по определению не может быть контейнеров типа vector

Это сообщение отредактировал(а) zkv - 4.12.2007, 16:00
PM MAIL   Вверх
Anton Vatchenko
Дата 4.12.2007, 16:04 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 21.5.2004

Репутация: нет
Всего: -1



Так вот поэтому я и спрашиваю про Си, но работал с vector, а 90% ответов тут дали люди невнимательные... Мне нужны динамические массивы, посему маллок не подойдет, вектор - в с++.


--------------------
user posted image
PM MAIL   Вверх
bsa
Дата 4.12.2007, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Anton Vatchenko, malloc - это выделение памяти. именно он тебе и нужен (ну может с calloc проще будет, хотя это по сути одно и тоже).

я только вот не понял, а причем тут Unix?

Это сообщение отредактировал(а) bsa - 4.12.2007, 16:20
PM   Вверх
Anton Vatchenko
Дата 4.12.2007, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 21.5.2004

Репутация: нет
Всего: -1



Маллок умеет динамические массивы делать (то есть, где все время меняется количество элементов)? Это что-то новое... То есть он сможет мне помочь работать с массивами то из 10, то из 1000 элементов, где на каждом шаге (раз 20 в секунду) это самое количество элементов меняется...

Это сообщение отредактировал(а) Anton Vatchenko - 4.12.2007, 16:24


--------------------
user posted image
PM MAIL   Вверх
zkv
Дата 4.12.2007, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 26
Всего: 92



Цитата(Anton Vatchenko @  4.12.2007,  16:23 Найти цитируемый пост)
Маллок умеет динамические массивы делать (то есть, где все время меняется количество элементов)? Это что-то новое... То есть он сможет мне помочь работать с массивами то из 10, то из 1000 элементов, где на каждом шаге (раз 20 в секунду) это самое количество элементов меняется...

перечислили доступный инструментарий уже:
Цитата(bsa @  4.12.2007,  15:31 Найти цитируемый пост)
malloc/calloc/realloc/free

PM MAIL   Вверх
bsa
Дата 4.12.2007, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Anton Vatchenko, ты вообще знаешь, как vector работает?
Когда делаешь resize(10): Если capacity()>=10, то память не выделяется, в противном случае выделяется с помощью realloc 2*max(capacity(), 10) * sizeof(value_type), capacity принимает значение количества выделенных элементов. Но пользователю предоставляется только new_size... 
PM   Вверх
Anton Vatchenko
Дата 4.12.2007, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 21.5.2004

Репутация: нет
Всего: -1



Но это достаточно страшный метод, который я никогда не использую... Ведь не зря в С++ есть вектора, хэшмапы и прочее... Вот я хотел бы и тут найти...


--------------------
user posted image
PM MAIL   Вверх
Lazin
Дата 4.12.2007, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



Цитата(Anton Vatchenko @  4.12.2007,  16:04 Найти цитируемый пост)
Мне нужны динамические массивы

так используй realloc 

Код

//создаем динамический:-) массив
char* arr = (char*)realloc(NULL, 128);
//изменяем размер
arr = (char*)realloc(arr, 1024);


Добавлено через 5 минут и 11 секунд
когда realloc делаешь содержимое массива сохраняется, да-же если указатель изменился...
PM MAIL Skype GTalk   Вверх
bsa
Дата 4.12.2007, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Anton Vatchenko, извиняй. На C++ уже сделали оптимизацию, а на Си, возможно, нет. Хотя, может быть, что те же malloc и realloc немного оптимизированы. Но не так, как vector.
С другой стороны, если тебе нужно часто менять количество элементов, но случайный доступ к ним не нужен, то имеет смысл использовать дву/односвязные списки - там не придется каждый раз выделять кучу памяти под все объекты.
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0946 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.