Russian Qt Forum
Май 09, 2024, 23:39 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Двумерный динамический массив  (Прочитано 15832 раз)
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #15 : Октябрь 07, 2014, 19:34 »

Вот вам и с двумя QVector
Код
C++ (Qt)
#include <QVector>
#include <QDebug>
 
typedef QVector<int> ivec;
 
int main()
{
   int a = 10,
       b = 20;
   QVector<ivec>mas(a, ivec(b));
   mas[0][0] = 0;
   mas[0][1] = 5;
 
   qDebug() << mas[0][0] << " " << mas[0][1];
 
   return 0;
}
 

Да не знает ТС заранее, какой у него размер массива.. Вот у вас он сейчас 10 на 20, а ему нужно поведение, аналогичное map'у..
 
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #16 : Октябрь 07, 2014, 19:44 »

Вот самый наивный способ, как добиться того, чего хочет ТС:
Код
C++ (Qt)
template <class T>
using rubber_array2d = std::map<int, std::map<int, T>>;
 
rubber_array2d<int> array;
array[0][0] = 1;
array[0][1] = 3;
// и т.д..
 


Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
GamBitiK
Гость
« Ответ #17 : Октябрь 07, 2014, 20:20 »

Сделал через Qmap<int,Qmap<int,int> > а и все работает обращаюсь как a[][]=0
Записан
GamBitiK
Гость
« Ответ #18 : Октябрь 07, 2014, 20:22 »

спасибо большое всем
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4727



Просмотр профиля WWW
« Ответ #19 : Октябрь 07, 2014, 21:44 »

чувствую преподаватель такую халтуру не одобрит Веселый
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #20 : Октябрь 07, 2014, 23:12 »

чувствую преподаватель такую халтуру не одобрит Веселый
Ой, очень хотелось бы в это верить..  Но, лично у меня, не такой оптимистический прогноз..( 
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4727



Просмотр профиля WWW
« Ответ #21 : Октябрь 07, 2014, 23:25 »

ТС: если возникают сложности с вектором векторов, можно и одномерным вектором реализовать. тогда элементу [i ][j] будет соответствовать элемент [i*n + j].
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #22 : Октябрь 07, 2014, 23:44 »

ТС: если возникают сложности с вектором векторов, можно и одномерным вектором реализовать. тогда элементу [i ][j] будет соответствовать элемент [i*n + j].
Я боюсь, что там возникнут уже другие сложности..
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Alexu007
Гость
« Ответ #23 : Октябрь 08, 2014, 05:46 »

Код
C++ (Qt)
Qmap<int, Qmap<int, int> > a;

А в чём тут проблема и как в Qt правильно создать многомерный динамический массив?

« Последнее редактирование: Октябрь 08, 2014, 06:09 от Alexu007 » Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #24 : Октябрь 08, 2014, 08:26 »

Код
C++ (Qt)
Qmap<int, Qmap<int, int> > a;

А в чём тут проблема и как в Qt правильно создать многомерный динамический массив?



QMap?
И кидайте ругательства от компилятора, тут форум программистов, а не экстрасенсов Улыбающийся
Записан

Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #25 : Октябрь 08, 2014, 08:32 »

Код
C++ (Qt)
Qmap<int, Qmap<int, int> > a;

А в чём тут проблема и как в Qt правильно создать многомерный динамический массив?
Проблема в затратности такого решения - как по памяти так и по скорости. Да и удобно лишь на первый взгляд, напр
Код
C++ (Qt)
for (int i = 0; i < numRow; ++i)
for (int j = 0; j < numCol; ++j)
 arr[i][j] = 0;
Откуда возьмете numRow/numCol ?

Если планируются интенсивные удаления/вставки то правильно "вектор векторов", а если нет то лучше через одномерный. Возможно придется повозиться с вставкой строк/столбов, но это только полезно - не привыкайте "пастись на готовом"
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.152 секунд. Запросов: 23.