powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Массив и переменные
12 сообщений из 12, страница 1 из 1
Массив и переменные
    #33417760
tors
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ся не позволяет обьявлять размер массива с помощью переменной:
int w=100;
int h=300;
BYTE c[width][height];
как это обойти?
вектор не катит - мне нужен именно массив
C ув. Tors
...
Рейтинг: 0 / 0
Массив и переменные
    #33417810
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
C или C++ ?

в С++ используй new
в С - malloc
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Массив и переменные
    #33417822
tors
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
c++
пример плиз
C ув. Tors
...
Рейтинг: 0 / 0
Массив и переменные
    #33417831
spectre
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Или
Код: plaintext
1.
2.
const int w =  100 , h =  200 ;
int a[w][h];
или
Код: plaintext
1.
2.
3.
#define w  100 
#define h  200 
int a[w][h];
Или динамически (на мой взгляд лучший вариант, особенно если не знаешь заранее размерности).
...
Рейтинг: 0 / 0
Массив и переменные
    #33417841
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
int *p=new int[MAX];
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Массив и переменные
    #33417855
tors
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторconst int w = 100, h = 200;
int a[w][h];

5 билдер выдаёт
констант экспрессион рекьюирэд

авторint *p=new int[MAX];

А двумерный
C ув. Tors
...
Рейтинг: 0 / 0
Массив и переменные
    #33417860
spectre
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Динамически лучше так:
Код: plaintext
1.
2.
3.
4.
5.
int w =  100 , h =  200 ;
int** a;
a = new int*[w];
for (int j =  0 ; j < w; j++)
  a[j] = new int[h];
...
Рейтинг: 0 / 0
Массив и переменные
    #33417954
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет уж, от задачи зависит, как лучше.

Думаю, в данном случае, лучше так:

int *p=new int[WIDTH*HEIGHT];

p[x+y*WIDTH]
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Массив и переменные
    #33417989
spectre
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Карабас Барабас
Нет уж, от задачи зависит, как лучше.

Думаю, в данном случае, лучше так:

int *p=new int[WIDTH*HEIGHT];

p[x+y*WIDTH]


Реально, если сравнить, как выделяется память в динамической области, это одно и тоже. А вот работать с двумерным массивом как с двумерным массивом, как по мне, так приятнее.
...
Рейтинг: 0 / 0
Массив и переменные
    #33418492
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spectre
Код: plaintext
1.
2.
for (int j =  0 ; j < w; j++)
  a[j] = new int[h];
просить у системы память, скажем, 100000 раз - это неудобно, а потом еще освобождать ее незабыть ....
...
Рейтинг: 0 / 0
Массив и переменные
    #33418558
Фотография Землекоп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
#include <vector>
#include <iostream>

template <typename T>
class array2
{
public:
  array2(){};
  array2(int r, int c)
  {
	rows=r;
	cols=c;
    for(int i= 0 ; i<rows; ++i)
    {
      data.push_back(std::vector<T>(cols));
    }
  }
  

  inline std::vector<T> & operator[](int i) { return data[i]; }

  inline const std::vector<T> & operator[] (int i) const { return data[i]; }
  int rows, cols;
private:
  std::vector<std::vector<T> > data;  
};
  
void myprint(array2<int> &a)
	{
	for(int i= 0 ; i<a.rows; ++i)
		{
		for(int j= 0 ; j<a.cols; ++j)
			{
			std::cout << a[i][j] <<"  ";
			}
		std::cout << std::endl;
		}
	}
int main()
 {
 int ii, jj;

 ii= 10 ;
 jj= 3 ;

 array2<int>a(ii,jj);

 for(int i= 0 ; i<ii; ++i)
   for(int j= 0 ; j<jj; ++j)
     {
     a[i][j] = i+j;
     }

 myprint(a);
 return  0 ;
 }

...
Рейтинг: 0 / 0
Массив и переменные
    #33420359
luser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
class Matrix
{
public:
Matrix(int rowCount, int colCount)
{
_items = new int[rowCount * colCount];
_rowCount = rowCount;
_colCount = colCount;
}
~Matrix()
{
delete [] _items;
}
int get(int rowIndex, int colIndex)
{
return _items[rowIndex * _rowCount + colIndex];
}
void set(int rowIndex, int colIndex, int value)
{
_items[rowIndex * _rowCount + colIndex] = value;
}
private:
int *_items;
int _rowCount;
int _colCount;
};

ЗЫ, не мое. Но нравиться. И работает нормально. Если патерном сделать, будет саФсем хАрашо.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Массив и переменные
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]