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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
nill
10 / 10 / 0
Регистрация: 16.08.2009
Сообщений: 417
#1

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

08.07.2013, 19:46. Просмотров 772. Ответов 16
Метки нет (Все метки)

Изучаю с++ классы и хочу уточнить такие моменты

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

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

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

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

Заменить статические массивы на глобальные и heapalloc на new.WinApi - C++
Есть программа,перемножающие два многочлена с помощью потоков. Коэффиценты задаются в массивах A и B n,m-их разномерность. Они у меня...

Динамические массивы структур;Классы. Класс массивы структур;Классы. Класс динамического массива структур. - C++
Здраствуйте.Помогите с практичкой мое задание 4.3. Строка таблицы данных содержит следующую информацию о владельцах авто: ф.и.о....

Глобальные и статические глобальные переменные - C++
Скажите, чем отличаются глобальные переменные от статических глобальных переменных?

массивы и классы - C++
1.Создать класс Goods (товар). В классе должны быть представлены поля: на¬именование товара, дата оформления, цена товара, количество...

классы массивы - C++
Итак, я начал знакомиться с с++, поначалу все просто было, а вот как до классов дошел начались проблемки, есть класс Acount, нужно описать...

Массивы и классы C++. Задача. - C++
Доброго времени суток, товарищи... Объявляю награду за выполнение след. задач.. заинтересовавшиеся в ЛС отпишитесь

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

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

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

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

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

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

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

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

По мне ваша задача видится так: создаем объект класса - заносим в поля некую информацию. Нужна еще информация - можем создать еще объект. Итого 2 объекта. чем не подходит такой вариант - никак не пойму.
0
nill
10 / 10 / 0
Регистрация: 16.08.2009
Сообщений: 417
08.07.2013, 21:19  [ТС] #5
По мне ваша задача видится так: создаем объект класса - заносим в поля некую информацию. Нужна еще информация - можем создать еще объект. Итого 2 объекта. чем не подходит такой вариант - никак не пойму.
Ну так информация из обычных массивов внутри класса будет теряться при создании объекта класса в разных функциях программы, у меня цель один раз где то в программе заполнить массив, а потом его использовать там где мне захочется, статик массив не потеряет своих значений.
0
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
08.07.2013, 22:03 #6
Цитата Сообщение от nill Посмотреть сообщение
у меня цель один раз где то в программе заполнить массив
а зачем для этого класс, можно структурой обойтись, или там функции предусматриваются?
0
nill
10 / 10 / 0
Регистрация: 16.08.2009
Сообщений: 417
08.07.2013, 22:15  [ТС] #7
soican,
Да заполнять массив буду в функции делая запрос к БД ну итд
0
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6486 / 3130 / 307
Регистрация: 04.12.2011
Сообщений: 8,644
Записей в блоге: 5
08.07.2013, 23:10 #8
Цитата Сообщение от nill Посмотреть сообщение
В конце использования массива я просто вызову десктруктор класса и уничтожу весь массив.
Если переменная или массив static в классе или функции, удалять его не нужно, да и не получится. Они создаются при старте программы и имеют её время жизни. И обращаться можно без создания экземпляра через имя типа, потому, что создаются до создания какого-либо экземпляра, то есть для всего класса в целом.
0
nill
10 / 10 / 0
Регистрация: 16.08.2009
Сообщений: 417
08.07.2013, 23:19  [ТС] #9
IGPIGP, понятно
Но вопрос остался, массив static в классе заменит обычный глобальный массив или как написал но не объяснил kventin_zhuk, есть вариант лучше?
0
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6486 / 3130 / 307
Регистрация: 04.12.2011
Сообщений: 8,644
Записей в блоге: 5
08.07.2013, 23:41 #10
Цитата Сообщение от nill Посмотреть сообщение
есть вариант лучше?
Смотря с чем сравнивать. Выбор структуры зависит от того, что нужно делать. Если Вы утвердились с выбором: многомерные статические массивы, а не векторы скажем, то так тому и быть. Объявив их в своих классах, Вы сможете в классах же, привязать к этим массивам методы специфичные для каждого класса, но схожие синтаксически например.
0
0x10
2465 / 1637 / 241
Регистрация: 24.11.2012
Сообщений: 4,040
09.07.2013, 05:15 #11
nill, прям все данные из базы планируете хранить в массивах?)
0
nill
10 / 10 / 0
Регистрация: 16.08.2009
Сообщений: 417
09.07.2013, 06:42  [ТС] #12
0x10, да
0
0x10
2465 / 1637 / 241
Регистрация: 24.11.2012
Сообщений: 4,040
09.07.2013, 06:55 #13
nill, т.е. все сортировки и поиски предполагается реализовать своими силами, а не использовать средства, уже предусмотренные в субд?
0
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
09.07.2013, 07:38 #14
Цитата Сообщение от 0x10 Посмотреть сообщение
nill, прям все данные из базы планируете хранить в массивах?)
Цитата Сообщение от nill Посмотреть сообщение
0x10, да
Резервная копия в оперативной памяти :-)
1
nill
10 / 10 / 0
Регистрация: 16.08.2009
Сообщений: 417
09.07.2013, 16:53  [ТС] #15
0x10, все дело в скорости доступа, нельзя каждый раз запрашивать данные из БД, мне важна производительность проги, но тема не об этом
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.07.2013, 16:53
Привет! Вот еще темы с ответами:

Массивы классы и функции - C++
Здравствуйте мне дали задание на оценку но я не совсем понимаю его. Не могли бы вы объяснить какие примерно нужно использовать функции и...

Классы строк, массивы преобразование и т.д - C++
У меня в учебнике есть такой пример: #include <iostream> #include <string.h> using namespace std; // Rudimentary string...

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

Сложить массивы почленно (используются шаблонные классы) - C++
Приветствую. Почему-то ни в одной моей теме ответа так и не наблюдается за последнее время. Надеюсь, поможете. Есть у нас лаба с таким...


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
09.07.2013, 16:53
Ответ Создать тему
Опции темы

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