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

Классы с++ vs глобальные массивы - C++

Восстановить пароль Регистрация
 
nill
8 / 8 / 0
Регистрация: 16.08.2009
Сообщений: 417
08.07.2013, 19:46     Классы с++ vs глобальные массивы #1
Изучаю с++ классы и хочу уточнить такие моменты

В моей проге используется куча много мерных глобальных массивов

1) Правильно понимаю что используя классы и static массивы внутри класса, я заменю все обычные глобальные массивы ?

2) В многомерные глобальные массивы у меня извлекаются данные из Базы данных(большие таблицы с кучей полей), правильно понимаю что без массивов тут не обойтись или в классах есть какие то инструменты чтобы извлечь кучу данных из БД и куда то записать их ?

3) Могу ли я в конструкторе класса инициализировать все статические переменные чтобы не проводить их инициализацию отдельно (попробовал не получилось, может что не так делаю, а может нельзя инициализировать static массивы внутри конструктора)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.07.2013, 19:46     Классы с++ vs глобальные массивы
Посмотрите здесь:

массивы и классы C++
C++ Массивы классы и функции
классы массивы C++
C++ Массивы и классы C++. Задача.
Глобальные и статические глобальные переменные C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kventin_zhuk
БНТУ ФИТР
 Аватар для kventin_zhuk
214 / 154 / 15
Регистрация: 26.12.2012
Сообщений: 382
08.07.2013, 19:53     Классы с++ vs глобальные массивы #2
1) суть статических полей внутри класса - они общие для всех объектов этого класса. Зачем вам это? класс - всего лишь описание. - по сути каждый раз при обращении к статик полю класса вы будете тыркаться в одни и те же свои массивы.

2) смотря что у вас за база данных. Может для неё это все уже реализовано?

3) впринципе можно - но нужно ли? при создании объектов класса старое значение будет затираться начальным. Оно вам нужно?

Почитайте про static - мне кажется он вам здесь не нужен.
nill
8 / 8 / 0
Регистрация: 16.08.2009
Сообщений: 417
08.07.2013, 20:26  [ТС]     Классы с++ vs глобальные массивы #3
1) суть статических полей внутри класса - они общие для всех объектов этого класса. Зачем вам это? класс - всего лишь описание. - по сути каждый раз при обращении к статик полю класса вы будете тыркаться в одни и те же свои массивы.
Ну так а что делать ? Цель более упорядоченное и красивое использование данных из БД. Сейчас при использовании много мерных (пяти шести мерных) массивов, есть большая вероятность ошибки. Глобальные массивы нужно явно обнулять. Про класс думаю что он даст мне большую стабильность. В конце использования массива я просто вызову десктруктор класса и уничтожу весь массив.

2) смотря что у вас за база данных. Может для неё это все уже реализовано?
БД Postgres, думаю что БД самая обычная я хотел узнать в принципе может в с++ классах есть какая то технология для упорядоченной и красивой записи данных после запроса к БД.

3) впринципе можно - но нужно ли? при создании объектов класса старое значение будет затираться начальным. Оно вам нужно?
Понял спасибо! Тогда где лучше инициализировать static переменные класса. Сейчас сделал в .cpp файле класса где будут реализации функций класса.

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

Я не хочу изучать и использовать классы просто для галочки, сначала хочу понять что они действительно нужны и будут лучше для моей ситуации
kventin_zhuk
БНТУ ФИТР
 Аватар для kventin_zhuk
214 / 154 / 15
Регистрация: 26.12.2012
Сообщений: 382
08.07.2013, 20:31     Классы с++ vs глобальные массивы #4
nill, все равно не вижу необходимости в статике. Вот пример явного использования статика: допустим есть N объектов класса A. Тогда внутри класса A делаем статическую переменную count. И соответственно в конструкторах/деструкторах инкрементим/декрементим. Объектов класса A много - количество одно на всех. Понимаете?

По мне ваша задача видится так: создаем объект класса - заносим в поля некую информацию. Нужна еще информация - можем создать еще объект. Итого 2 объекта. чем не подходит такой вариант - никак не пойму.
nill
8 / 8 / 0
Регистрация: 16.08.2009
Сообщений: 417
08.07.2013, 21:19  [ТС]     Классы с++ vs глобальные массивы #5
По мне ваша задача видится так: создаем объект класса - заносим в поля некую информацию. Нужна еще информация - можем создать еще объект. Итого 2 объекта. чем не подходит такой вариант - никак не пойму.
Ну так информация из обычных массивов внутри класса будет теряться при создании объекта класса в разных функциях программы, у меня цель один раз где то в программе заполнить массив, а потом его использовать там где мне захочется, статик массив не потеряет своих значений.
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
08.07.2013, 22:03     Классы с++ vs глобальные массивы #6
Цитата Сообщение от nill Посмотреть сообщение
у меня цель один раз где то в программе заполнить массив
а зачем для этого класс, можно структурой обойтись, или там функции предусматриваются?
nill
8 / 8 / 0
Регистрация: 16.08.2009
Сообщений: 417
08.07.2013, 22:15  [ТС]     Классы с++ vs глобальные массивы #7
soican,
Да заполнять массив буду в функции делая запрос к БД ну итд
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6171 / 2900 / 283
Регистрация: 04.12.2011
Сообщений: 7,710
Записей в блоге: 3
08.07.2013, 23:10     Классы с++ vs глобальные массивы #8
Цитата Сообщение от nill Посмотреть сообщение
В конце использования массива я просто вызову десктруктор класса и уничтожу весь массив.
Если переменная или массив static в классе или функции, удалять его не нужно, да и не получится. Они создаются при старте программы и имеют её время жизни. И обращаться можно без создания экземпляра через имя типа, потому, что создаются до создания какого-либо экземпляра, то есть для всего класса в целом.
nill
8 / 8 / 0
Регистрация: 16.08.2009
Сообщений: 417
08.07.2013, 23:19  [ТС]     Классы с++ vs глобальные массивы #9
IGPIGP, понятно
Но вопрос остался, массив static в классе заменит обычный глобальный массив или как написал но не объяснил kventin_zhuk, есть вариант лучше?
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6171 / 2900 / 283
Регистрация: 04.12.2011
Сообщений: 7,710
Записей в блоге: 3
08.07.2013, 23:41     Классы с++ vs глобальные массивы #10
Цитата Сообщение от nill Посмотреть сообщение
есть вариант лучше?
Смотря с чем сравнивать. Выбор структуры зависит от того, что нужно делать. Если Вы утвердились с выбором: многомерные статические массивы, а не векторы скажем, то так тому и быть. Объявив их в своих классах, Вы сможете в классах же, привязать к этим массивам методы специфичные для каждого класса, но схожие синтаксически например.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
09.07.2013, 05:15     Классы с++ vs глобальные массивы #11
nill, прям все данные из базы планируете хранить в массивах?)
nill
8 / 8 / 0
Регистрация: 16.08.2009
Сообщений: 417
09.07.2013, 06:42  [ТС]     Классы с++ vs глобальные массивы #12
0x10, да
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
09.07.2013, 06:55     Классы с++ vs глобальные массивы #13
nill, т.е. все сортировки и поиски предполагается реализовать своими силами, а не использовать средства, уже предусмотренные в субд?
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
09.07.2013, 07:38     Классы с++ vs глобальные массивы #14
Цитата Сообщение от 0x10 Посмотреть сообщение
nill, прям все данные из базы планируете хранить в массивах?)
Цитата Сообщение от nill Посмотреть сообщение
0x10, да
Резервная копия в оперативной памяти :-)
nill
8 / 8 / 0
Регистрация: 16.08.2009
Сообщений: 417
09.07.2013, 16:53  [ТС]     Классы с++ vs глобальные массивы #15
0x10, все дело в скорости доступа, нельзя каждый раз запрашивать данные из БД, мне важна производительность проги, но тема не об этом
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
09.07.2013, 17:25     Классы с++ vs глобальные массивы #16
nill, если очень хочется - можете кешировать последний запрос. Но уж никак не всю базу грузить в память.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.07.2013, 17:26     Классы с++ vs глобальные массивы
Еще ссылки по теме:

C++ Классы строк, массивы преобразование и т.д
C++ Массивы. Классы. Нахождение среднего значения дробей
Написать код используя массивы, указатели, виртуальные функции, наследование, классы и т.д C++

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

Или воспользуйтесь поиском по форуму:
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6171 / 2900 / 283
Регистрация: 04.12.2011
Сообщений: 7,710
Записей в блоге: 3
09.07.2013, 17:26     Классы с++ vs глобальные массивы #17
Цитата Сообщение от nill Посмотреть сообщение
мне важна производительность проги,
Тогда может лучше развернуть их в статические одномерные и без классов?
Yandex
Объявления
09.07.2013, 17:26     Классы с++ vs глобальные массивы
Ответ Создать тему
Опции темы

Текущее время: 00:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru