Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Как создать неограниченый массив на С++


Автор: Украинец 19.8.2004, 00:40
Здравствуйте.
Помогите мне пожалуйста, очень нужно..... qstn.gif
Как создавать массив на С++ если в нем заранее не известно число вложенных в нем элементов.
Если можно вышлите мне на мейл [email protected] исходный код примера. sample.gif
Спасибо все кто поможет. smile.gif

Автор: Ridat 19.8.2004, 04:29
#include "afxtempl.h"


CArray <тип, тип> a;

//Объект позволяющий создавать динамические массивы.

Если интересно напиши [email protected] Перешлю английсую простенькое описание функций членов

Автор: gepard 19.8.2004, 06:05
Блин. Ей богу эта тема поднимается в 100000000000000000000000 раз.
FAQ->"Динам. массивы"

Автор: chipset 19.8.2004, 07:10
Ridat
А я счас STL'ный vector юзаю smile.gif
Мне он как то больше симпатизирует, хотя MFC+STL иногда траблиЦЦа omg.gif

Автор: cardinal 19.8.2004, 09:51
А я свой класс написал когда-то, который и является динамическим массивом...

Автор: gepard 19.8.2004, 13:40
cardinal
Уважаю.

Нефиг юзать чужие классы. Мы программисты или кто?
Многие могут сказать: "Зачем изобретать велосипед?"
Надо его изобретать. Хотя бы тем, кто недавно начал работать с си++, чтобы знания повышались и квалификация.
А те, кто уже давно с ним знаком, напишут класс динам. массива без проблем.
ИМХО.

Автор: chipset 19.8.2004, 13:53
Тогда не следует использовать cout, cin, string, WINAPI'шные функции и вообще создавайте окна вручную.. smile.gif
ИМХО
Добавлено @ 13:57
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_mfc_carray.3a3a.carray.asp

Автор: ReSeT 19.8.2004, 14:38
chipset, Я не согласен.
Смотри: одно дело когда ты уже чудесно владеешь материалом, сам легко сможешь такое написать...но тебе влом, а другое дело когда человек только начинает толком учиться программировать...(как раз в это время обычно люди пишут свои библиотеки, у них выробатывается стиль программирования, а потом сравнив свою библиотеку с уже написаной можно выбрать ту или иную, можно сделать какие-то выводы по поводу своей библиотеки)

Я например некоторое время програмил на Masm'е32, так вот я сам написал свою библиотеку для работы с окнами...мне понравилось(хороший опыт: пока я разбирался с тем что в принципе уже написано, я смог освоить некоторые приемы программирования на ассемблере под Windows API)

()
gepard, cardinal - респект!(уважаю)
smile.gif

Автор: chipset 19.8.2004, 14:42
Я совершенно не против велосипедов smile.gif
И не в коем случае не считаю себя прекрасно разбирающимся в материале exclamation.gif exclamation.gif (особенно если глянуть на мои 2.84 brainbench).
Просто я говорю что STL можно использовать при необходимости smile.gif
Добавлено @ 14:44
Кроме того я считаю, что сегодня новый программер должен начинать не с VC + MFC (.NET) а с таких компилеров как Turbo C++ чтобы немного понять основы и не запутываться...

Автор: chipset 19.8.2004, 14:53
Украинец
Ты не сказал массивы какого типа?
Наверное для int и char можно не применять подобных излишеств smile.gif

Автор: Гость_Satana_Claus 19.8.2004, 15:21
realloc()
или шаблоны

Автор: _hunter 19.8.2004, 16:16
народ, а вы название темы читали? ведь просили НЕОГРАНИЧЕННЫЙ массив! а все ваши CArray' и и vector' ы упрутся в два гига ( смотря какая операционка ) ;)

Автор: chipset 19.8.2004, 16:18
Хмм.. В STL такой функциональности нету :-/ Может в бусте? notify.gif

Автор: ReSeT 19.8.2004, 16:24
Ага! Совсем неограниченный - тогда в файл писать нада(хотя и будет ограничение размерами винта, но все-же).
Создаем файл произвольного доступа нужного типа....и вот вам массив!(ну почти массив...)

-=О! Для этого дела можно свой класс написать.....(напишу - выложу)=-

smile.gif smile.gif smile.gif

Автор: chipset 19.8.2004, 23:32
Базы данных ;)

Автор: cardinal 19.8.2004, 23:39
Цитата(chipset @ 19.8.2004, 12:53)
Тогда не следует использовать cout, cin, string, WINAPI'шные функции и вообще создавайте окна вручную..

Очень часто приходится их переписывать потому, что сделаны они бывают через ж%№;...
Цитата(chipset @ 19.8.2004, 13:42)
Просто я говорю что STL можно использовать при необходимости

Да, можно. smile.gif Особенно если главная задача: "главное чтобы работало". smile.gif
Цитата(_hunter @ 19.8.2004, 15:16)
народ, а вы название темы читали? ведь просили НЕОГРАНИЧЕННЫЙ массив!

Цитата(ReSeT @ 19.8.2004, 15:24)
Ага! Совсем неограниченный - тогда в файл писать нада(хотя и будет ограничение размерами винта, но все-же).

Вот, вот... Наша вселенная может быть "неограниченной" и то даже в этом с недавнего времени сомневаются...

Автор: chipset 19.8.2004, 23:42
Цитата
Да, можно.  Особенно если главная задача: "главное чтобы работало". 

Я не уверен что смогу написать лучше, оттестированной тысячами программистов библиотеки и использовать её где нибудь уверенный что глюк не в ней а в основном коде.
У меня ещё не настолько высокая квалификация tounge.gif
Для обучения - полностью согласен.
Добавлено @ 23:43
Цитата
WINAPI'шные функции

Цитата
Очень часто приходится их переписывать потому, что сделаны они бывают через ж%№;...

wow.gif wow.gif wow.gif

Автор: cardinal 20.8.2004, 00:23
Я больше имел в виду эти функции:
Цитата
cout, cin, string

Есть такая функция memset. Так вот очень известные создатели компиляторов smile.gif сделали ее так, что переписав memset самому можно убыстрить ее в 2-3 раза... А memset это станадарт!

Про WINAPI не знаю, но не ожидаю от них ничего хорошего... (ты думаешь в них memset не используется?) Да и тысячи программистов над ними не сидели. Часто большие коммерческие проекты пишутся по принципу: надо - добавим, а это не лучший принцип. Я имею в виду что получается снежный ком, а не постоянное улучшение написанного.

Помнишь прикол насчет "определенных" исходников:
Код
...
// ver = 0x01;
ver = 0x02;
...

То есть номер версии поменялся, а что улучшилось? Интерфейс?

Автор: lynx_916 20.8.2004, 21:50
Цитата(_hunter @ 19.8.2004, 15:16)
все ваши CArray' и и vector' ы упрутся в два гига ( смотря какая операционка ) ;)

и что?
врядли комунть нужно будет больше чем 2 гига.

Цитата(cardinal @ 19.8.2004, 08:51)
А я свой класс написал когда-то, который и является динамическим массивом...

между прочим, создание контэйнерных классов - очень хороший способ оттачивать навыки.


Автор: _hunter 21.8.2004, 11:16
Цитата
и что?
врядли комунть нужно будет больше чем 2 гига.

Раз просили -- значит нжно ;)

Автор: lynx_916 21.8.2004, 16:08
а воообще, вопрос можно понять по-разному:
неогр. число элементов.
неогр размер в памяти. hehe.gif

Автор: Peter 23.8.2004, 11:16
Цитата
заранее не известно число вложенных в нем элементов.

А мне не понятна эта фраза. Как элементы могут вкладываться в массив?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)