Другие языки программирования и технологии

Как описать и использовать динамический массив в C++

Нужно описать двухмерный массив. У массива всегда 2 строки , а вот количество столбцов может меняться. Если описать через вектор - int *mtx = new int[Количество столбцов * 2 ]; то как потом обращаться к определенным ячейкам ? Объясните, пожалуйста, по-подробнее. Или еще какие-нибудь методы. Заранее спасибо.
ну можно аналогично сделать и подругому
int *m= new int[][2];
либо вот статейка

http://ad.cctpu.edu.ru/cpp/glava16_3.htm
Vitalii !
Vitalii !
35 594
Лучший ответ
Александр Юдин Неа, не проходит, ошибки вылетают...
[C++ Error] Unit1.cpp(21): E2313 Constant expression required
[C++ Error] Unit1.cpp(21): E2034 Cannot convert 'int ( *)[1]' to 'int *'
[C++ Error] Unit1.cpp(23): E2062 Invalid indirection
[C++ Warning] Unit1.cpp(26): W8004 'n' is assigned a value that is never used

вот код

int n = 255;
int *A = new int[2][n];

A[1][23]=67;

delete[] A;
#include <vector>
using namespace std;

vector<int> massiv [2]; Массив из 2 векторов, где каждый элемент - инт
Ну или
struct massiv2int
{
int data[2];
int& operator [] (int idx) { return data[idx]; }
}

vector <massiv2int> massiv; Вектор, где каждый элемент - массив из 2 интов
Серегин Сергей
Серегин Сергей
54 366
struct _NAME
{
int a; // Элемент первой строки
int b; // Элемент второй строки
};

_NAME *pArr = new _NAME[N];

pArr[ i ].a;
pArr[ i ].b;
Сергей ...
Сергей ...
21 360
просто надо выделить память под массив... в win32
LocalAlloc LocalFree
Динамический массив:
int **mas, i, j, m;
cout << "Stolbcov: ";
cin >> m;
mas=new int*[2];
for( i = 0; i < 2; i++) mas[ i ]=new int[m];

Заполнение массива:
for( i = 0; i < 2; i++)
for( j = 0; j < m; j++)
cin >> mas[ i ][ j ];

Форматированный вывод массива:
for( i = 0; i < 2; i++)
{
cout << endl;
for( j = 0; j < m; j++)
cout << mas[ i ][ j ] << "\t";
}
Вектор - это класс представляющий собой динамический массив. С ним очень удобно работать. Но на C++ есть еще путь объявить динамический массив.
int n = 255;
int *A = new int[2][n];
Использование масива.. .
A[1][23]=67;
Удаление масива.. .
delete[] A;
Леонид Курамов Да? и это динамический массив?
Александр Юдин Неа, не проходит, ошибки вылетают...
[C++ Error] Unit1.cpp(21): E2313 Constant expression required
[C++ Error] Unit1.cpp(21): E2034 Cannot convert 'int ( *)[1]' to 'int *'
[C++ Error] Unit1.cpp(23): E2062 Invalid indirection
[C++ Warning] Unit1.cpp(26): W8004 'n' is assigned a value that is never used

вот код

int n = 255;
int *A = new int[2][n];

A[1][23]=67;

delete[] A;