Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.68
Izual
94 / 119 / 6
Регистрация: 13.11.2012
Сообщений: 1,539
#1

Нужен способ помещения разного рода типа данных в контейнеры типа массивов или структур - C++

18.02.2014, 14:05. Просмотров 2821. Ответов 47

Сабж. Нужен способ помещения разного рода типа данных в контейнеры типа массивов или структур или... пободного рода простых для восприятия методов.
Поясню.
Пишу базу дынных, используя структуры я могу получить динамически кол-во строк исходя из данных в структуре.
Например:
C++
1
2
3
4
5
6
struct addition
{
    char m[10][20];
};
addition *ma;
addition *mae;
Т.е. При использовании такого вида структуры, я могу создать N-ое кол-во строк динамически с помощью оператора New.
C++
1
2
int MK=5;
    ma=new addition[MK];
Но вот кол-во членов не может быть динамическим на сколько я знаю, т.е. нельзя в структуре написать: m[n][j]
Где заранее будет проинициализированна глобальная переменная типа int, а перед определением самой структуры, я бы написал что например n = 10, j = 30...
Ещё интересует вопрос с разнородными переменными, например я вот захочу чтоб в структуре было char[], int, float, WORD типы переменных... Посоветовали юзать тип VARIANT, однако как его юзать, если кол-во бит выделенное для каждого типа переменных - будет различаться...
В общем нужен простой подход(в синтаксисе) к данному вопросу.
И повторюсь - классы и векторы не предлагать, они слишком сложны в синтаксисе.(переубеждать меня не надо, данная тема не для этого создана).
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.02.2014, 14:05     Нужен способ помещения разного рода типа данных в контейнеры типа массивов или структур
Посмотрите здесь:
Сортировка массивов разного типа C++
C++ Программирование задач с использованием комбинированного типа данных или структур
C++ Хранение в массиве данных разного типа
C++ Создать программу обработки массивов структур используя структурные переменные и переменные типа объеденения
C++ Реализовать сортировку и поиск данных в массиве структур типа School
C++ Реализовать сортировку и поиск данных в массиве структур типа School
C++ Массив шаблонов или как обратиться к элементам разного типа, хранящиеся в одном "списке" по индексу
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Izual
94 / 119 / 6
Регистрация: 13.11.2012
Сообщений: 1,539
19.02.2014, 23:09  [ТС]     Нужен способ помещения разного рода типа данных в контейнеры типа массивов или структур #21
Ну я всё же работаю с контроллами всякими типа кнопок, списков, эдитов...
Это всё таки программирование, а не администрирование. Формы не нужны для тех кто не является программистом, либо является системным программистом(типа там внутренности копает..)

Количество ничего не говорит о качестве, эти 17к разбиты на функции, каждая отвечает за своё действие, всё предельно ясно. Чужой код - если написан без классов и имеет привильно структурированную форму кода, т.е. последовательную, с комментами действий - где это необходимо - нет проблем. Однако зачем копаться в чужом? Я именно из за этого хочу написать саму основу для любых СУБД.
Вы просто не можете оценить объём работы которую я сделал, и которую делает программа. Поэтому пропущу ваше замечание.

мне параллельно, что мой код не запускается под виндой
"Нет высшей цели чем служение людям"(с. к\ф Мирный воин)
Это я о том, что пользоваться вашим продуктом могут только те, кто пользуются линухой, а это - только профессионалы ПК.
По поводу Qt, его переносимости в Win(имею ввиду, код - написанный под Linux) - не знаю уж как оно в винде будет себя чувствовать. Знаю только обратную сторону, про которую уже говорил, о том что код написанный для Win, уже на линухе будет выдавать ошибки.

для бухгалтеров не пишу
А они что не люди? Все мы созданны для определённой работы, каждый имеет то место, которое определяется исходя из его качеств личности. Я например не подойду на должность бухгалтера, потому что я неусидчивый, к тому же для меня это будет не в радость, т.к. творчества там нет(для меня).

ела всю RAM
Причём тут это? Это уже ошибки программиста, который не учитывает средне статистический набор памяти компьютеров и не делает GetLastError. Да конешно можно и не хранить данные в RAM, а делать стыковку через временные файлы, но... не знаю, я пока что делаю через временную структуру, меня устраивает и работает.

По поводу SQL - нет, это не то что мне надо, говорю же я делаю программу шире чем может дать SQL.(по мимо БД, планирую много чего ещё).

Вообще точно так же как слово ООП, я слово Базы Данных трактую буквально. Т.е. любой файл - есть база даных, будь это картинкой или txt или чем то ещё. Так что в этом то и весь прикол... я хочу реализовать оболочку для чтения файлов, а то какими алгоритмами будет читаться - это уже ложится на плечи того кто будет с помощью этой программы работать.
elivin
65 / 65 / 1
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
20.02.2014, 10:23     Нужен способ помещения разного рода типа данных в контейнеры типа массивов или структур #22
Цитата Сообщение от Izual Посмотреть сообщение
Формы не нужны для тех кто не является программистом, либо является системным программистом(типа там внутренности копает..)
Ну, я являюсь прикладным, а не системным программистом. Формы нужны для формошлёпства. То есть, для программирования это побочный процесс. Лично я под программированием понимаю задание логики работы программы, а что эта логика будет выполняться при нажатии на ту или иную кнопку - дело третье. Сейчас меня мимо проходящие дизайнеры интерфейсов покусают

Цитата Сообщение от Izual Посмотреть сообщение
Количество ничего не говорит о качестве
Если это количество не упихано в один файл. Увы, я больше сторонник идеи разбивания кода на модули, каждый из которых имеет свою задачу (и осмысленное имя). Объяснение очень простое - если код смотрит другой человек (или сам же автор, но писал его достаточно давно), то ему сначала нужно понять архитектуру в целом проекта, а уже потом вникать в детали реализации каждой из частей. Уверен, что если оставишь проект на год-полтора (вообще временно забросить), то потом сможешь потом разобраться, как что работает?

Цитата Сообщение от Izual Посмотреть сообщение
зачем копаться в чужом?
Второй минус

Цитата Сообщение от Izual Посмотреть сообщение
те, кто пользуются линухой, а это - только профессионалы ПК
У меня родители - не профессионалы ПК. И, тем не менее, спокойно юзают Debian, коий у меня везде. К тому же, из последних накатанных мной программок: программка, следящая за доступностью одного хоста в сети и ведущая лог (у нас в одном кабинете по субботам пару раз свет отключался, решили, что кто-то пакастит, я по субботам не работаю, в кабинете есть коммутатор, до которого можно достучаться, что позволяет отследить, когда и во сколько включали/отключали электричество, правда, после старта такой слежки (которую я не скрывал), отключения вдруг прекратились), программка, которая добавляет !important в CSS-файлы, в каждую строку со свойством, если таковой там ещё не стоит (делал пользовательский стиль для одного сайта, проверял с помощью дополнения stylish, который требует !important для переопределения свойств, а писал и админу посылал в нормальном виде, правда, эта утилитка кроссплатформенной получилась). Зачем они "простым пользователям"?

Цитата Сообщение от Izual Посмотреть сообщение
По поводу Qt, его переносимости в Win(имею ввиду, код - написанный под Linux) - не знаю уж как оно в винде будет себя чувствовать. Знаю только обратную сторону, про которую уже говорил, о том что код написанный для Win, уже на линухе будет выдавать ошибки.
Да я уже понял, что про Qt и Linux ты только слышал где-то. Программа, использующая Qt вместо системных API, одинаково будет себя чувствовать и на винде, и на лине, и на макоси

Цитата Сообщение от Izual Посмотреть сообщение
А они что не люди?
Пишешь программы для диспетчеров авиалиний? А они что, не люди? Я про специализированный софт - бухгалтерскими программами не занимаюсь (тем более разработкой).

Не по теме:

И это пишет человек, которому принадлежат фразы:

Цитата Сообщение от Izual Посмотреть сообщение
недо программисты(бугалтера и другой шлак)
Цитата Сообщение от Izual Посмотреть сообщение
те кто работают у них на выездах - это в основном недо программисты, которые придумать сами не умеют, у них есть дорога по которой овцы ходят...



Цитата Сообщение от Izual Посмотреть сообщение
нет, это не то что мне надо, говорю же я делаю программу шире чем может дать SQL
А чем это мешает? Если это будет один из компонентов, чем навредит просмотр того, как это сделали (написали, отладили и многократно протестировали) другие, более компетентные люди?

Цитата Сообщение от Izual Посмотреть сообщение
какими алгоритмами будет читаться - это уже ложится на плечи того кто будет с помощью этой программы работать
То есть, программа для нагромождения своих собственных велосипедов?

P.S. Мы уже полностью отклонились от темы
Dmitriy_M
1340 / 1221 / 111
Регистрация: 20.03.2009
Сообщений: 4,376
Записей в блоге: 11
20.02.2014, 10:49     Нужен способ помещения разного рода типа данных в контейнеры типа массивов или структур #23
Цитата Сообщение от Izual Посмотреть сообщение
я уже достаточно опытен и знаю курс направления
По вашим топикам этого не видно.
Izual
94 / 119 / 6
Регистрация: 13.11.2012
Сообщений: 1,539
20.02.2014, 15:13  [ТС]     Нужен способ помещения разного рода типа данных в контейнеры типа массивов или структур #24
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
По вашим топикам этого не видно.
"Будете смотреть и не увидите"(с Библия).

elivin...

формошлёпства
Вы бы 7 раз отмерили прежде чем такое писать. Логика и процесс написания алгоритмов форм - достаточно тяжёлый и трудоёмкий процесс.(или вы думаете что всё делается стандартными способами?.. нет это не так, для каждой задачи архисложности приходится писать отдельную процедуру обработки со всеми вытекающими NOTIFY)
дизайнеры интерфейсов покусают
Покусают и правильно сделают, потому что вы для начала если бы имели представление о том что в вложенных формах целая проблема порой создать эту кнопку так, чтобы она работала и фаст кеи на неё прилепи и обработай всё так, чтоб было просто в использовании и чтоб ошибок не было.(пример вам: в обычной таблице ListView - невозможно стандартными способами создать кнопку на одной и ячеек, всё приходится самому просчитывать и делать, а если учесть что только первая колонка лишь является выделяемой по дефолту, то я вот ещё даже управление стрелочками не сделал из за этого)

разбивания кода на модули
Так и делается, сначало я делал код под каждое дочернее окно. Потом появилась надобность в полной автоматизации и чтении\записи данных в программу с парсинга сайта, пришлось выводить в функции очень многое. Так что всё разбито по модулям, а то что все модули(функции) в одном файле - то тут проблема только с тем что компиляция занимает ~10 секунд, долговато. А так всё предельно ясно, т.к. все функции логически понятны по действиям, обозначены и прокоментированны.

По поводу копания в чужом коде - от части лишь вы правы. Т.е. только для тех лиц, которые сами не знают чего хотят. Повторюсь, курс свой я знаю, дело только в способе реализации, т.к. знаний мало.(юн ещё чтоб всё знать в программировании на C)

У меня родители
В том то и дело что У вас! Вы видимо приучили и объяснили. А теперь подумайте сколько ещё семей у которых дети понимают как в Linuxe работать, и какие из родителей способны разобраться... деградация полным ходом, а вы говорите про использование мозга, извините, но не все читают "инструкцию к использованию мозга".

Зачем они "простым пользователям"?
А вы с другой стороны посмотрите на этот вопрос. "Чем может быть полезна данная утилка людям?"...

недо программисты
Всё правильно, вы просто не поняли суть того что я написал. "Каждый сверчёк должен знать свой шосток". Каждый в этом мире обладает своими способностями, уже трижды пишу эту фразу, а вы всё "не слышите". Недопрограммисты - потому что они хоть и могут понять блок схему, но сами её написать - нет. В этом есть свой плюс, они зато могут заниматься долгое время копипастой, а у меня терпения нет, потому что творческая личность. У каждого свой потенциал для разных действий. (осторожно философия!) Нас для этого бог и создал в огромном кол-ве на земле - чтоб мы нашли работу для каждого, сплатились и шли бы вперёд.(ибо объединяй и здавствуй или разъединяй и влавствуй)

А чем это мешает?
Мешает тем, что "желаю делать сам" - это как в сказке "По щучьему велению". Глянуть я может и гляну, хотя точно не уверен, но разобраться в том что там... мне легче и лучше самому своё сделать, говорю же у меня свой стиль и подход. Тем более - то что мне там может понадобиться это крупицы, не хочу возиться перебирая всё чтоб найти 2 строчки. Да и я не думаю что они писали это так, как вижу это я. Когда придумываеш заного велосипед - и рождаются самородки.

для нагромождения своих собственных велосипедов
А вы видели как 1С устроен? Есть оболочка - сама программа. И есть вложенный функционал - файлы с алгоритмами для определённых манипуляций. Программа хавает функциональные файлы и компилирует их, а уже потом бухгалтера пользуются.

Мы уже полностью отклонились от темы
Нет, посмотрите на это под другим углом. Всё в тему, мы обсуждаем процесс помещения информации в контейнер. (хотя контейнером сейчас считается ваш и мой мозг, потому что мы как бы идём(я надеюсь) к общему знаменателю).

Так, у меня теперь после раздумий вопрос назрел. А сколько памяти занимают типы данных, и если например сравнивать integer с массивом из символов. Integer - это 4 байта, значения +- 2'147'483'647 (т.е. 10 символов), и сравнить с массивом из 11 символов(поледний же /n), сколько займёт такой массив? - больше или меньше чем Integer?...
Dmitriy_M
1340 / 1221 / 111
Регистрация: 20.03.2009
Сообщений: 4,376
Записей в блоге: 11
20.02.2014, 15:56     Нужен способ помещения разного рода типа данных в контейнеры типа массивов или структур #25
Цитата Сообщение от Izual Посмотреть сообщение
"Будете смотреть и не увидите"(с Библия).
И не увидел ваших знаний алгоритмов и структур данных.

Цитата Сообщение от Izual Посмотреть сообщение
А теперь подумайте сколько ещё семей у которых дети понимают как в Linuxe работать
Android то же Linux, однако у людей нет пробоем с ним
Izual
94 / 119 / 6
Регистрация: 13.11.2012
Сообщений: 1,539
20.02.2014, 16:07  [ТС]     Нужен способ помещения разного рода типа данных в контейнеры типа массивов или структур #26
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
И не увидел ваших знаний алгоритмов и структур данных.


Android то же Linux, однако у людей нет пробоем с ним
Вам с первого раза не понятно куда я вам указал? Укажу конкретнее - уйдите из этой темы, вы бесите уже. В третий раз позову админа, а то вы не понимаете русским языком.
elivin
65 / 65 / 1
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
20.02.2014, 20:13     Нужен способ помещения разного рода типа данных в контейнеры типа массивов или структур #27
Цитата Сообщение от Izual Посмотреть сообщение
Логика и процесс написания алгоритмов форм - достаточно тяжёлый и трудоёмкий процесс
Что значит "алгоритмов форм"? Разработка логики приложения и создание формы - разные процессы. Зачастую отдельные части приложения пишутся и тестируются изначально в консольном режиме, а уже потом "нацепляются" на форму в виде обработчика события. То есть, разработка обработчиков сигналов - не разработка формы, разработка формы - это, как ни странно, формошлёпство.

Не по теме:

Цитата Сообщение от Izual Посмотреть сообщение
а если учесть что только первая колонка лишь является выделяемой по дефолту, то я вот ещё даже управление стрелочками не сделал из за этого
Виндоформопроблемы



Цитата Сообщение от Izual Посмотреть сообщение
А так всё предельно ясно, т.к. все функции логически понятны по действиям, обозначены и прокоментированны.
Только сначала нужно их всех в файле с 17к строк найти и выявить связи между ними... То, что каждый из элементов прост, не гарантирует, что в целом система проста.

Цитата Сообщение от Izual Посмотреть сообщение
Т.е. только для тех лиц, которые сами не знают чего хотят
То есть, все профессиональные разработчики сами на знают, чего хотят?

Цитата Сообщение от Izual Посмотреть сообщение
Вы видимо приучили и объяснили.
Поставил, показал, где запускать браузер. С LibreOffice мама сама разбиралась. Фильмы/музыка/etc тоже сами осваивали. Ибо миф о том, что в линуксе всё сложно, устарел лет на 5-10. А с бубунтой/минтом справится вообще каждый школьник.

Цитата Сообщение от Izual Посмотреть сообщение
"Чем может быть полезна данная утилка людям?"
Это перефразированный мой же вопрос. Ок, раз не можешь сформулировать, отвечу сам - ничем, так как они одноразового действия.

Цитата Сообщение от Izual Посмотреть сообщение
Недопрограммисты - потому что они хоть и могут понять блок схему, но сами её написать - нет.
Сходи в раздел 1С, там 1С-программистам это скажи

Не по теме:

Цитата Сообщение от Izual Посмотреть сообщение
(осторожно философия!)
Не путай философию с религией. Это принципиально разные вещи



Цитата Сообщение от Izual Посмотреть сообщение
Когда придумываеш заного велосипед - и рождаются самородки.
Когда придумываешь велосипед, рождаются баги. В огромных количествах.

Цитата Сообщение от Izual Посмотреть сообщение
Да и я не думаю что они писали это так, как вижу это я.
Тогда не стоит делать программирование частью профессии. Так как профессия программиста подразумевает под собой львиную долю работы с чужим кодом и совсем небольшую с написанным чисто самим собой.

Цитата Сообщение от Izual Посмотреть сообщение
А вы видели как 1С устроен?
Сталкивался, у нас есть бухгалтерия. Он не предлагает велосипедить свои обработчики для открытия текстовых файлов/картинок. Насколько понимаю, его цель - генерация форм и отчётов, учёт и другие бухгалтерские/складские/etc функции, используя БД.

Цитата Сообщение от Izual Посмотреть сообщение
хотя контейнером сейчас считается ваш и мой мозг
Мы в разделе C++

Цитата Сообщение от Izual Посмотреть сообщение
сколько займёт такой массив? - больше или меньше чем Integer?
Символ char - 1 байт. Соответственно, размер строки равен (количество цифр в числе + '\n'). То есть, 11 байт. Если учесть, что есть ещё и отрицательные числа, то потребуется 12 символов (12 байт).

Не по теме:

Цитата Сообщение от Izual Посмотреть сообщение
В третий раз позову админа
Который тут всё потрёт из-за гигантского количества офтопа

Izual
94 / 119 / 6
Регистрация: 13.11.2012
Сообщений: 1,539
21.02.2014, 06:03  [ТС]     Нужен способ помещения разного рода типа данных в контейнеры типа массивов или структур #28
обработчика события - я про это и говорю. Хотя форму саму, например картинку на контролл нацепить - целая проблема, т.к. состояний у контролла несколько, надо всё просчитать.

Виндоформопроблемы - так все под виндой, это стоит того.

с 17к строк найти и выявить связи между ними
В Visual Studi как и в Notepad++ функции скрываются, т.е. код функций скрывается, остаётся видимой только название функции с аргументами. Так что я так и работаю, все функции скрыты, все они прокоментированы и названы в соответствии с их действиями. Не тупите, говорю же всё сделано тип топ.

По поводу велосипеда, параллель вам - "плохому танцору и ноги мешают". И не надо спорить, если голова и руки на месте - то всё будет без багов.

работы с чужим кодом
По себе людей не судят. Я работаю со своим, и буду работать со своим. Я в этом уверен и бог мне в этом поможет. Главное - вера.

По поводу 1С вы ответили не на мой вопрос, а на тот который вы сами выдумали. Способ приминения программы 1С именно такой как описал его я. Вы видимо не видели внутренности, потому не компитентны.

Мы в разделе C++
Всё правильно - вычисляем как учиться учиться работать в области С/С++, в частности отношение к стилю языков, а тем более изначальный вопрос темы на столько парадакален, что не удивительно что тема зашла в философию.

потребуется 12 символов (12 байт).
Опа, а почему так?... почему тут 12, а в случае с integer 4?.. Что то я не вдуплил...

всё потрёт
Копирую страницы)))
Nick Alte
Эксперт С++
1608 / 1000 / 118
Регистрация: 27.09.2009
Сообщений: 1,927
Завершенные тесты: 1
21.02.2014, 23:40     Нужен способ помещения разного рода типа данных в контейнеры типа массивов или структур #29
Цитата Сообщение от Izual Посмотреть сообщение
Опа, а почему так?... почему тут 12, а в случае с integer 4?.. Что то я не вдуплил...
Потому что в integer эти 4 байта используются на все 100%, а у представления числа в виде строки десятичных цифр КПД в районе 30%.
Izual
94 / 119 / 6
Регистрация: 13.11.2012
Сообщений: 1,539
22.02.2014, 00:40  [ТС]     Нужен способ помещения разного рода типа данных в контейнеры типа массивов или структур #30
Nick Alte, а есть какие то алгоритмы приведения числа к 4 байтному виду в форме символов? Я так понимаю что можно использовать например коды символов...
например, 'Y' соответствует числу 90. И например число, которое разбираем содержит '90', тогда вместо двух символов, можно написать один - Y. Это работает так или по другому, тогда как?..
Nick Alte
Эксперт С++
1608 / 1000 / 118
Регистрация: 27.09.2009
Сообщений: 1,927
Завершенные тесты: 1
22.02.2014, 11:41     Нужен способ помещения разного рода типа данных в контейнеры типа массивов или структур #31
Это вопрос интерпретации информации. В байте хранится 8 битов, что даёт 256 возможных комбинаций. Мы можем обозначать этими комбинациями числа от 0 до 255. В 4 байтах мы имеем (256)^4 = 4 с хвостиком миллиарда возможных значений для всего набора.
А вот если мы договоримся воспринимать байты как хранилище для кодов символов, то получаем 1 символ (в данном случае десятичную цифру числа) на байт. А раз уж в представлении числа используются цифры, то нас только они и будут интересовать. Стало быть, для каждого символа из 256 возможных кодов допустимыми являются только 10.
Раньше, в староглиняные времена, имел хождение ещё один занятный способ представления чисел: двоично-десятичный (bcd). Под каждую десятичную цифру отводилось ровно полбайта, использовалось 10 значений из 16 возможных, в целиковом байте получалось 100 допустимых значений из 256 возможных. В процессоре даже сохранились какие-то связанные с этим форматом команды.
Но в любом случае, это всё вопрос интерпретации. В "сыром" виде в памяти хранится просто некий набор битов. Надо знать, что мы ожидаем увидеть в данном конкретном участке памяти: коды символов, двоичное представление целого числа со знаком или без знака, число с плавающей точкой или ещё что-то. В зависимости от этих ожиданий и обращаться с этой информацией соответствующим образом. Компилятор автоматически отслеживает эти ожидания через типы данных.
Izual
94 / 119 / 6
Регистрация: 13.11.2012
Сообщений: 1,539
27.02.2014, 13:40  [ТС]     Нужен способ помещения разного рода типа данных в контейнеры типа массивов или структур #32
1.) Так, в скользь я тут спросил такое(но из за небольшого отклонения, ответа не получил):
-Как сделать динамически кол-во переменных типа структуры?
Т.е. мне надо не просто:
C++
1
2
addition *ma;
addition *mae;
А чтобы я мог контролировать кол-во подобных экземпляров.
Как реализовать? Или точное название для гугла дайте.

2.) По поводу интерпритации информации, я так понимаю что мне надо для этих целей смотреть алгоритмы самих функций типа itoa. Они есть в открытом виде?..

3.) По поводу динамического массива(который мы тут разбираем), есть такая тема: Как создать динамический массив структур?
Где написано, что:
Вектор возвращает ссылку на свой объект.
Если он возвращает ссылку на реальный объект - вы получаете доступ к этому объекту по этой ссылке.

Если он возвращает ссылку на указатель, который указывает на реальный объект, то вы получаете доступ к объекту через ссылку, которая указывает на указатель, который указывает на объект - итого оверхед адресации.

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

Поэтому, если по задаче перемещать объекты туда-сюда не нужно, лучше просто хранить в векторе сам объект.
Тут конешно мы не трогаем вектор, но в контексте того, что указатели как внутри структуры(динамический массив), так и сами экземпляры структуры... Не возникнет ли у меня подобная проблема с тем что я нарыл?... Как тогда мне контролировать процесс, т.е. можно ли вообще оверхеды ловить?..
Nick Alte
Эксперт С++
1608 / 1000 / 118
Регистрация: 27.09.2009
Сообщений: 1,927
Завершенные тесты: 1
27.02.2014, 19:22     Нужен способ помещения разного рода типа данных в контейнеры типа массивов или структур #33
Цитата Сообщение от Izual Посмотреть сообщение
Они есть в открытом виде?..
Существует множество учебных примеров, в том числе и на этом форуме. Алгоритм перевода числа в строку основан на последовательном выделении цифр из числа арифметическими операциями и переводом этих цифр в коды символов.

Нулевой оверхед возможен только за счёт априорного знания (то есть, структура данных известна на момент компиляции). Если структура данных задаётся динамически, то неизбежен оверхед по памяти на хранение описания содержимого и оверхед по времени на чтение, понимание и поддержание этого описания. Так, простейший способ контролировать количество чего-то - завести переменную, в которой это количество хранится. Хранение этой переменной даёт оверхед по памяти, а её чтение и обновление - оверхед по времени.
Izual
94 / 119 / 6
Регистрация: 13.11.2012
Сообщений: 1,539
28.02.2014, 00:35  [ТС]     Нужен способ помещения разного рода типа данных в контейнеры типа массивов или структур #34
Nick Alte, переводчика пожалуйста))))
Я под оверхедом понимаю - ошибку обращения к какому либо значению... Но моё понимание что то не клеится в вашем контексте. Так ладно, расшифрую о том и о сём:
1. В ссылке говорится про указатели и возникающий оверхед при обращении к значениям. Т.е. если у меня 3-4 структуры, естественно т.к. экземпляр структуры(если я правильно назвал это) прописывается как указатель:
C++
1
addition *ma;
То получится, что при обращении к каким то данным через тройную и выше адресацию через подобные указательные процедуры - может возникнуть оверхед, как например он возникает, если путь к папке в винде + название файла превышает допустимый максимум (1024 символа?) и винда выдаёт ошибку - мол, может я и скопирую данные в папку, но учтите что путь к файлу слишком длинный... Но это минимальная проблема, т.к. если же в переменную не внесётся значение, обработки этой ошибки не будет и далее переменная будет спользоваться - то возможет такой конфуз в программе что мама не горюй.
2. У меня уже будет через даже одну структуру - тройная адресация, а если учесть что некоторые переменные ссылаются на другие - то получится ппц как много... чую ошибок не миновать.
3. Не понятно что вы имеете ввиду:
контролировать количество чего-то - завести переменную
Это вы про какой из пунктов?.. То что переменная о инф. длинне массива будет - безусловно. Но далее уже не понятно, именно из того что вы перечислили: время на чтение, понимание и поддержания.
----
4. По поводу itoa... На форуме дофига чего есть, но иногда подобрать "ключевые слова для поиска" - становится сложно, почему я в пред. посте и попросил "точное название для гугла".(я попробую как вы написали: "Алгоритм перевода числа в строку")
----
И оставшиеся вопросы более важны, т.к. пока что я не уверен что буду делать через преобразования строки в другие форматы, т.к. это будет сложновато реализовать для всех возможных форматов. Возможно пойду через Variant структуру, хотя пока не допёр как с ним работать, а в инете все примеры использования Variant через классы сделаны, что меня совершенно не устраивает(переубеждать не надо).
elivin
65 / 65 / 1
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
28.02.2014, 11:00     Нужен способ помещения разного рода типа данных в контейнеры типа массивов или структур #35
Цитата Сообщение от Izual Посмотреть сообщение
-Как сделать динамически кол-во переменных типа структуры?
C++
1
2
k = 5; // 5 структур
addition *ma = new addition[k]; // ma - массив из k объектов addition
Izual
94 / 119 / 6
Регистрация: 13.11.2012
Сообщений: 1,539
28.02.2014, 16:00  [ТС]     Нужен способ помещения разного рода типа данных в контейнеры типа массивов или структур #36
elivin, Нет! Это я знаю. Мне надо кол-во экземпляров типа ma[0], ma[1]..
Я наверно не правильно назвал это.(не знаю как правильно). Т.е. надо типа:
C++
1
2
3
4
5
int d=10;
for(int i=0;i<d;i++)
{
 addition *ma[i] = new addition[k];
}
Т.е. вместо ma и mae, мне нужна динамика.
Правильно ли это?
elivin
65 / 65 / 1
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
28.02.2014, 16:06     Нужен способ помещения разного рода типа данных в контейнеры типа массивов или структур #37
C++
1
2
3
addition **ma = new addition*[d];
for (int i = 0; i < d; i++)
   ma[i] = new addition[k];
?

Добавлено через 49 секунд
И обращаемся как к двумерному массиву
Nick Alte
Эксперт С++
1608 / 1000 / 118
Регистрация: 27.09.2009
Сообщений: 1,927
Завершенные тесты: 1
28.02.2014, 17:14     Нужен способ помещения разного рода типа данных в контейнеры типа массивов или структур #38
Оверхед в моём понимании (и, как я подозреваю, в понимании большого количества других людей) - накладные расходы, дополнительные затраты памяти и времени на поддержание работоспособности какой-то конструкции.
Izual
94 / 119 / 6
Регистрация: 13.11.2012
Сообщений: 1,539
28.02.2014, 20:39  [ТС]     Нужен способ помещения разного рода типа данных в контейнеры типа массивов или структур #39
elivin, спасибо попробую. А как кстати в этом случае описать ma в глобальных переменных?
Ну было то так:
C++
1
2
3
4
5
struct addition
{
    char m[10][20];
};
addition *ma;
Но теперь так нельзя... чем заменить?

Nick Alte, потеря времени перед глобальной динамикой - ничто. Темболее сейчас такие мощьные компы, что им это по барабану(ну если не сильно с подобными оверхедами увлекаться). Другое дело если ошибки будут возникать из за этих оверхедов, хотя я по таймингу ничего не делаю, пусть хоть пол часа данные читает, главное чтоб в конце всё было правильно сделано.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.02.2014, 23:57     Нужен способ помещения разного рода типа данных в контейнеры типа массивов или структур
Еще ссылки по теме:
C++ Передать массив элементов(типа int) объекта, в функцию из массивов(типа int)
C++ Builder Нужен совет по созданию своего типа данных
Возврат объекта шаблонного типа от типа Type из специализации шаблона метода от того же типа C++
C++ Присвоение переменных разного типа
Определения знака переменных разного типа C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
DrOffset
6922 / 4115 / 942
Регистрация: 30.01.2014
Сообщений: 6,910
28.02.2014, 23:57     Нужен способ помещения разного рода типа данных в контейнеры типа массивов или структур #40
Izual, судя по вашему описанию динамически расширяемого хранилища экземпляров:
Цитата Сообщение от Izual Посмотреть сообщение
А чтобы я мог контролировать кол-во подобных экземпляров.
вам нужен список, а не массив (я же правильно понимаю, что удаляться они тоже будут?).
Если не хочется использовать классы, то в сети есть довольно простые реализации на Си. Ну или я сюда могу скинуть пример (полноценный, потому не очень маленький), если хотите.
Yandex
Объявления
28.02.2014, 23:57     Нужен способ помещения разного рода типа данных в контейнеры типа массивов или структур
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru