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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Двумерный динамический массив  (Прочитано 15947 раз)
GamBitiK
Гость
« : Октябрь 07, 2014, 17:52 »

Ребят ,нужно создать динамический двумерный массив(резиновый)  и доступ осуществлять через mas[] [] проблема в том что не знаю размера массива и он заполняется в процессе работы. Как создать такое чудо,пробовал через qvector<qvector<int>> a; и обращался как
  • =1 выкидывает аборт
« Последнее редактирование: Октябрь 07, 2014, 18:03 от GamBitiK » Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



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

используйте std::vector или аналогичный, или высчитывайте размер массива, пример:
Код
C++ (Qt)
#include <iostream>
using namespace std;
 
int main() {
int arr[20];
cout << sizeof(arr) / sizeof(int);
return 0;
}
 
Записан

GamBitiK
Гость
« Ответ #2 : Октябрь 07, 2014, 18:06 »

Но я размера вообще не знаю
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



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

Код
C++ (Qt)
int a = 10,
    b = 20;
int* mas = new int[a][b];
 
Записан
GamBitiK
Гость
« Ответ #4 : Октябрь 07, 2014, 18:36 »

Код
C++ (Qt)
int a = 10,
    b = 20;
int* mas = new int[a][b];
 
вы же в этом коде задаете размер массива ? 10 на 20
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



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


вы же в этом коде задаете размер массива ? 10 на 20


наврал

Код
C++ (Qt)
   int a = 10,
       b = 20;
   int** mas = new int*[a];
   for (int i = 0; i < a; i++)
   {
       mas[i] = new int[b];
   }
 
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



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

Напишите обёртку над вектором,  где определите свой оператор (i, j), который при необходимости будет менять размер массива..

Или лучше стоит сделать шаг назад и лучше продумать саму архитектуру?
    
Записан

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

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

Сообщений: 4349



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

Или лучше стоит сделать шаг назад и лучше продумать саму архитектуру?
Ой накликаете сейчас... всуе используя такие слова как "архитектура". Подмигивающий
Записан
GamBitiK
Гость
« Ответ #8 : Октябрь 07, 2014, 19:01 »

мне нужно объявить начальное условие в этом массиве напримет mas[0][0]=0  и дальше дописывать mas[0][1]=5...и так далее,позволяют такие вольности Qmap qvector но как сделать что бы обращение было mas[5][5]=0 я не знаю и оберки писать не умею,нуб еще
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



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

Или лучше стоит сделать шаг назад и лучше продумать саму архитектуру?
Ой накликаете сейчас... всуе используя такие слова как "архитектура". Подмигивающий
Двоих из лорца одинаковых с лица)  
Записан

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

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

Сообщений: 2130



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

Код
C++ (Qt)
#include <vector>
#include <iostream>
 
using namespace std;
typedef vector<int> ivec;
 
int main()
{
vector<ivec>mas(10, ivec(20));
mas[0][0] = 0;
mas[0][1] = 5;
 
cout << mas[0][0] << " " << mas[0][1];
 
return 0;
}
« Последнее редактирование: Октябрь 07, 2014, 19:11 от __Heaven__ » Записан
GamBitiK
Гость
« Ответ #11 : Октябрь 07, 2014, 19:09 »

а если мне не нужны лишнии записи там? потом нужно будет провести сортировку в каждой строке и подсчитать их количество?
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



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

Вот вам и с двумя 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;
}
 
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



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

https://ru.wikipedia.org/wiki/Vector_(C%2B%2B)
Записан
GamBitiK
Гость
« Ответ #14 : Октябрь 07, 2014, 19:17 »

wiki это классно,но все же как ?
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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