Форум программистов, компьютерный форум CyberForum.ru

Динамический массив произвольного размера - C++

Восстановить пароль Регистрация
 
slipp1
12 / 11 / 1
Регистрация: 09.11.2012
Сообщений: 365
Записей в блоге: 1
13.03.2013, 02:39     Динамический массив произвольного размера #1
динамический массив заданного размера:
C++
1
int *massiv = new int[9]
а как организовать произвольного размера?

спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
13.03.2013, 02:45     Динамический массив произвольного размера #2
C++
1
2
3
4
5
#include <vector> // в начале
 
std::vector<int> array(9); // начальный размер
 
array.resize(100500); // новый размер
Вот так.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
13.03.2013, 02:57     Динамический массив произвольного размера #3
Цитата Сообщение от slipp1 Посмотреть сообщение
а как организовать произвольного размера?
Если произвольного, в смысле неопределённого, то через объект с автоматическим управлением памятью:
C++
1
2
3
#include <vector> 
 
std::vector<int> array;
Если произвольного, в смысле получения значения размера при работе программы, то, например, так:
C++
1
2
3
size_t n;
cin >> n;
int *arr = new int[n];
slipp1
12 / 11 / 1
Регистрация: 09.11.2012
Сообщений: 365
Записей в блоге: 1
13.03.2013, 03:04  [ТС]     Динамический массив произвольного размера #4
все предложенное не то. еще есть какие варианты?
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
13.03.2013, 03:11     Динамический массив произвольного размера #5
Сперва надо чётко высказать, что хочется. Желательно с примерами.

VLA?
C++
1
2
3
int n;
// ...
int array[n];
malloc/realloc?
C++
1
2
3
int *array = (int*) malloc(9 * sizeof(*array));
// ...
array = (int*) realloc(100500 * sizeof(*array));
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
13.03.2013, 03:13     Динамический массив произвольного размера #6
Цитата Сообщение от slipp1 Посмотреть сообщение
все предложенное не то.
Что не устраивает?
slipp1
12 / 11 / 1
Регистрация: 09.11.2012
Сообщений: 365
Записей в блоге: 1
13.03.2013, 03:14  [ТС]     Динамический массив произвольного размера #7
Цитата Сообщение от OhMyGodSoLong Посмотреть сообщение
Сперва надо чётко высказать, что хочется. Желательно с примерами.[/CPP]
через new, delete
нужно создать динамический двумерный массив целый чисел с произвольным размером (не через вектор)
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
13.03.2013, 03:17     Динамический массив произвольного размера #8
Ну вот так бы и сказали.
C++
1
2
3
4
5
6
7
8
9
10
11
int **array = new int*[n];
for (int i = 0; i < n; i++) {
    array[i] = new int[m];
}
 
// ...
 
for (int i = 0; i < n; i++) {
    delete [] array[i];
}
delete [] array;
slipp1
12 / 11 / 1
Регистрация: 09.11.2012
Сообщений: 365
Записей в блоге: 1
13.03.2013, 03:20  [ТС]     Динамический массив произвольного размера #9
Цитата Сообщение от OhMyGodSoLong Посмотреть сообщение
Ну вот так бы и сказали.
C++
1
2
3
4
5
6
7
8
9
10
11
int **array = new int*[n];
for (int i = 0; i < n; i++) {
    array[i] = new int[m];
}
 
// ...
 
for (int i = 0; i < n; i++) {
    delete [] array[i];
}
delete [] array;
m і n нужно определять?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
13.03.2013, 03:22     Динамический массив произвольного размера #10
C++
1
2
3
4
5
6
7
8
9
10
11
size_t n, m;
cin >> n >> m;
    
int **arr = new int[n][m];
for (size_t = 0; i < n; ++i)
    arr[i] = new int[m];
 
for (size_t = 0; i < n; ++i)
    delete [] arr[i];
    
delete [] arr;
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
13.03.2013, 03:22     Динамический массив произвольного размера #11
Ну да, не из астрала же берутся. Определите их. Или как-нибудь по-другому назовите. Или числа напишите.
slipp1
12 / 11 / 1
Регистрация: 09.11.2012
Сообщений: 365
Записей в блоге: 1
13.03.2013, 03:49  [ТС]     Динамический массив произвольного размера #12
еще вопрос как сделать размер массива отрицательным?

перефразирую вышесказанное:

нужно создать динамический двумерный массив целый чисел с произвольным (включая и отрицательным) размером (не через вектор)

Добавлено через 4 минуты
вероятно умножить на -1 ?
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
13.03.2013, 03:52     Динамический массив произвольного размера #13
Берёте самую толстую книгу по теории множеств, которую можете найти. Открываете её на разделе про меры. Бьёте того, кто дал вам это задание, до тех пор, пока не выясните, что имеется в виду под "отрицательными размерами" и какова семантика отрицательных индексов. Потому что их можно понимать по-разному: или это просто сдвинутые указатели, или индексы берутся по модулю и отрицательные просто обходят массив от конца к началу.
slipp1
12 / 11 / 1
Регистрация: 09.11.2012
Сообщений: 365
Записей в блоге: 1
13.03.2013, 04:00  [ТС]     Динамический массив произвольного размера #14
oh my god сам в шоке
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.03.2013, 05:36     Динамический массив произвольного размера
Еще ссылки по теме:

Динамический массив элементов произвольного типа C++
Дан динамический одномерный массив размера N, изменить размер массива до M C++
C++ Динамический массив нулевого размера. Почему не падает программа?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
13.03.2013, 05:36     Динамический массив произвольного размера #15
Цитата Сообщение от slipp1 Посмотреть сообщение
а как организовать произвольного размера?
в каждый конкретный момент времени твой произвол будет задан.
Yandex
Объявления
13.03.2013, 05:36     Динамический массив произвольного размера
Ответ Создать тему
Опции темы

Текущее время: 09:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru