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

Как обьявить массив неизвестного размера? - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
31.10.2013, 10:37     Как обьявить массив неизвестного размера? #1
Помогите разобраться, есть класс, в котором обьявлен двумерный массив структур. Размер массива неизвестен, но должен быть определен во время выполнения функции load(). Как это сделать?

C++
#define MAX 512
 
class CModel {
public:
  struct SVertex {
    float x, y;
  };
 
  SVertex vertex[MAX][???]; // КАК ЭТО СДЕЛАТЬ?
 
  // загрузка модели
  void load(unsigned int id)
  {
    int count = rand()%100; // от 0 до 99
 
    for(int i=0; i<count; i++) {
      vertex[id][i].x = (float)rand()%10;
      vertex[id][i].y = (float)rand()%10;
    }
  }
  // рисование модели
  void draw(unsigned int id)
  {
    функция_рисования(&vertex[id][0]);
  }
 
} model;
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
31.10.2013, 10:39     Как обьявить массив неизвестного размера? #2
programina, Указатель использовать, вектор, еще что-то. Так нельзя, ибо при декларации многомерного массива мы обязаны указать все размерности кроме первой.
oxotnik
 Аватар для oxotnik
1584 / 1061 / 33
Регистрация: 21.08.2008
Сообщений: 4,545
Записей в блоге: 1
31.10.2013, 10:52     Как обьявить массив неизвестного размера? #3
C++
1
std::vector< std::vector< SVertex > > vertex;
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
31.10.2013, 10:55  [ТС]     Как обьявить массив неизвестного размера? #4
ForEveR, а так можно?
C++
SVertex ** vertex = new SVertex*[MAX];
 
for(int i = 0; i < count; i++)
    vertex[id] = new SVertex[i];
...
for(int i = 0; i < count; i++)
    vertex[id][i].x = (float)rand()%10;
eocron
Кактус
 Аватар для eocron
66 / 66 / 6
Регистрация: 23.05.2012
Сообщений: 343
31.10.2013, 10:59     Как обьявить массив неизвестного размера? #5
можно и так. Просто с векторами вам не надо будет парится насчет освобождения памяти. Да и интерфейс там более чем понятный.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
31.10.2013, 10:59     Как обьявить массив неизвестного размера? #6
programina, Можно, почему нет, но лучше естественно юзать вектор.
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
31.10.2013, 11:39  [ТС]     Как обьявить массив неизвестного размера? #7
Цитата Сообщение от programina Посмотреть сообщение
ForEveR, а так можно?
C++
SVertex ** vertex = new SVertex*[MAX];
 
for(int i = 0; i < count; i++)
    vertex[id] = new SVertex[i];
...
for(int i = 0; i < count; i++)
    vertex[id][i].x = (float)rand()%10;
блин, я туплю сегодня, это тоже самое

Добавлено через 39 минут
Не хочу векторы, они медленные.
oxotnik
 Аватар для oxotnik
1584 / 1061 / 33
Регистрация: 21.08.2008
Сообщений: 4,545
Записей в блоге: 1
31.10.2013, 11:40     Как обьявить массив неизвестного размера? #8
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от programina Посмотреть сообщение
Не хочу векторы, они медленные.
Ахаха, programina что ты делаешь!? Продолжай!
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
31.10.2013, 11:55     Как обьявить массив неизвестного размера? #9
programina, Вы просто не умеете их готовить. Не говоря уже о том, что в релизе они настолько же быстрые насколько массив.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.10.2013, 12:09     Как обьявить массив неизвестного размера?
Еще ссылки по теме:

C++ Как обьявить и инициализировать массив константных значений?
Ввод и вывод строки неизвестного размера C++
C++ Массив неизвестного размера

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

Или воспользуйтесь поиском по форуму:
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
31.10.2013, 12:09  [ТС]     Как обьявить массив неизвестного размера? #10
Цитата Сообщение от ForEveR Посмотреть сообщение
programina, Вы просто не умеете их готовить. Не говоря уже о том, что в релизе они настолько же быстрые насколько массив.
Поверю на слово, но позже обязательно проверю в коде.
Суть даже не в том, что они могут быть медленными, а в том, что хочется как можно меньше использовать высокоуровневые конструкции с++. Возможно, это страх перед новым, я же всетаки новичок
Yandex
Объявления
31.10.2013, 12:09     Как обьявить массив неизвестного размера?
Ответ Создать тему
Опции темы

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