![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
kvak |
![]()
Сообщение
#1
|
Студент ![]() Группа: Участник Сообщений: 51 Регистрация: 5.5.2010 Пользователь №: 1690 Спасибо сказали: 1 раз(а) Репутация: ![]() ![]() ![]() |
Здравствуйте. Вопрос касается двумерных массивов.
Стандартного и QVector Мне нужно, чтобы массив стал общедоступен внутри всех функций моего класса. 1. В файле header.h объявляю массив int order_id[12][6]; В файле order.cpp, который подключает мой header.h пытаюсь инициализировать массив. order_id[12][6] ={ {0, 0, 0, 1, 0, 2}, //.........и так далее }; -------- компилятор выдает ошибку. Лишь когда я в файле order.cpp сразу объявляю и инициализирую массив, то все получается. Но тогда я не смогу его использовать как данное-член моего класса. Как быть ? 2. Второй вопрос касается двумерного массива QVector В файле header.h объявляю двемерный массив QVector. В файле order.cpp мне надо выполнить функцию resize, чтобы массив стал 12 на 6. Не получается с двумя переменными. Как это можно сделать ? Также насчет заполнения QVector. Также как я это делал со стандартным массивом. тут не получается. Заполнять QVector обращаюсь к каждомй индексу это единственный способ его заполнить ? |
|
|
Алексей1153 |
![]()
Сообщение
#2
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
Мне нужно, чтобы массив стал общедоступен внутри всех функций моего класса. это автоматически и так происходит ![]() 1) заполняй в конструкторе. А ещё лучше - используй вектор и заполняй там же 2) двумерный массив [N][M] - это одномерный массив размером [N*M] . А в остальном - всё по пункту 1. по пункту 2 - это в зависимости от задачи, так как бывает удобно и массив указателей на массивы делать, и один цельный массив (как написано выше) Заполнять QVector обращаюсь к каждомй индексу это единственный способ его заполнить ? можно заполнить из ресурсов, из файла или из статического массива |
|
|
kvak |
![]()
Сообщение
#3
|
Студент ![]() Группа: Участник Сообщений: 51 Регистрация: 5.5.2010 Пользователь №: 1690 Спасибо сказали: 1 раз(а) Репутация: ![]() ![]() ![]() |
Я еще новичок, кое-что не понял.
Как мне правильно объявить массив (не QVector) в описании класса Когда я в заголовочном пишу в описании класса допустим int order[12][6]; а потом в конструкторе в файле cpp делаю заполнение, например order[0][0] = 1, то выдает ошибку. Так что нельзя делать что-ли ? 2. Так как сделать resize для двумерного QVector. Покажите код, если такая функция работает и для двумерного. 3. Покажите пожалуйста код, можно ли заполнить массив QVector более удобно, чем обращаясь к каждому индексу. |
|
|
Алексей1153 |
![]()
Сообщение
#4
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
попробую более развёрнуто
инициализировать массив можно можно так
обрати внимание на важную деталь: массив с данными для инициализации в конструкторе объявлен как static. Таким образом, массив располагается не в стеке функции и инициализируетсяч всего один раз. А вот копирование из него в массив класса будет происходить в каждом конструкторе Цитата Так как сделать resize для двумерного QVector. Покажите код, если такая функция работает и для двумерного. 2+3. QVector я не пользовался, но сделаешь по аналогии ) Для начала скажу, что двумерных векторов не бывает.
Сообщение отредактировал Алексей1153 - 6.9.2010, 19:39 |
|
|
kvak |
![]()
Сообщение
#5
|
Студент ![]() Группа: Участник Сообщений: 51 Регистрация: 5.5.2010 Пользователь №: 1690 Спасибо сказали: 1 раз(а) Репутация: ![]() ![]() ![]() |
Спасибо.
А это не двумерный QVector ? QVector< QVector<int> > vector; |
|
|
Алексей1153 |
![]()
Сообщение
#6
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
это вектор векторов. Можно и двумерным считать, но такой массив будет в памяти не единым куском, а раскидан (в общем случае) в отличие от цельного массива, лежащего в одном векторе.
|
|
|
kwisp |
![]()
Сообщение
#7
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 21.4.2025, 10:20 |