Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
KostyaKulakov
Заблокирован
#1

Двумерный динамический массив, что и с чем есть? - C++

24.08.2012, 12:53. Просмотров 1163. Ответов 20
Метки нет (Все метки)

собственно как сделать Двумерный динамический массив. и как можно проверить его работу?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.08.2012, 12:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Двумерный динамический массив, что и с чем есть? (C++):

Двумерный динамический массив - C++
Выскакивает ошибка Ошибка C2440 =: невозможно преобразовать "int *" в "int **" ConsoleApplication5 Из-за этого не выполняются...

Динамический двумерный массив - C++
Если число находится в интервале от 100 до 110, то используя подпрограмму, в матрицах Р(N,M), Q(N1,M1) и R(N2,M2) найти и отпечатать L -...

Двумерный Динамический массив - C++
Здравствуйте, такая проблема: не могу задать int** и char**...проблема в том что в функцию передются их размеры , но они не константы и...

Двумерный динамический массив - C++
Здравствуйте, подскажите пожалуйста где ошибка? реализовал 2 фукнции ввода и вывода массива. #include <iostream> #include <windows.h> ...

Двумерный динамический массив - C++
Необходимо ввести с клавиатуры количество строк и столбцов массива(матрица размером N*M), ввести исходные данные. Удалить столбец матрицы,...

Двумерный динамический массив - C++
Здравствуйте, задание такое: "Описать двумерный массив R целых чисел, размерностью NхM элементов, заполнять массив случайными числами по...

20
Leomana
59 / 59 / 5
Регистрация: 29.06.2012
Сообщений: 188
24.08.2012, 13:00 #2
неужели так сложно воспользоваться поиском..
вот например http://ci-plus-plus.blogspot.com/2012/05/c_17.html
1
Andsteadur
153 / 137 / 3
Регистрация: 23.05.2009
Сообщений: 275
24.08.2012, 13:01 #3
Создание двумерного массива int:
C++
1
2
3
4
5
6
7
size_t width = 10;
size_t height = 5;
int **arr = new int*[height];
for(size_t i = 0; i < height; ++i)
{
arr[i] = new int[width];
}
1
DaskOFF
112 / 112 / 9
Регистрация: 02.05.2012
Сообщений: 524
Записей в блоге: 1
24.08.2012, 13:03 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
 
int main()
{
 
int **mas = new int*[10];
for (int i=0; i !=10; i++) {
mas[i] = new int[10];
}
 
mas[5][5] = 3;
std::cout << mas[5][5];
return 0;
 
}
0
Buckstabue
175 / 124 / 6
Регистрация: 12.01.2012
Сообщений: 624
24.08.2012, 13:04 #5
А интересно, как наиболее грамотно создать двумерный вектор и как его лучше обходить?
0
DaskOFF
112 / 112 / 9
Регистрация: 02.05.2012
Сообщений: 524
Записей в блоге: 1
24.08.2012, 13:11 #6
Цитата Сообщение от Buckstabue Посмотреть сообщение
А интересно, как наиболее грамотно создать двумерный вектор и как его лучше обходить?
vector < vector< int> > vec;

Добавлено через 4 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <vector>
 
int main()
{
    std::vector< std::vector<int> > vec;
    std::vector<int> vec2;
    for (int j =1; j != 3; j++) {
        for (int i=1; i !=11; i++)
            vec2.push_back(i);
        vec.push_back(vec2);
        vec2.clear();
    }
 
    std::cout << vec[1][2];
 
 
    return 0;
}
1
nameless
Эксперт С++
334 / 298 / 14
Регистрация: 16.06.2009
Сообщений: 486
24.08.2012, 13:34 #7
Цитата Сообщение от Buckstabue Посмотреть сообщение
А интересно, как наиболее грамотно создать двумерный вектор и как его лучше обходить?
Ну или как-нибудь так
C++
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
#include <iostream>
#include <algorithm>
#include <vector>
#include <random>
 
int main() {
   const int N = 3;
   std::random_device random_dev;
   std::vector <std::vector <int>> vector2d(N, std::vector <int>(N));
   for (auto & vec : vector2d) {
      std::generate(
         vec.begin(),
         vec.end(),
         std::bind(
            std::uniform_int_distribution <int>(0, 10),
            std::mt19937(random_dev())
         )
      );
   }
 
   for (const auto & vec : vector2d) {
      for (const auto & val : vec) {
         std::cout << val << "\t";
      }
      std::cout << "\n";
   }
}
http://liveworkspace.org/code/21cf33f3ce85da05c83b0d69a6aa183c
1
KostyaKulakov
Заблокирован
24.08.2012, 15:11  [ТС] #8
Цитата Сообщение от Andsteadur Посмотреть сообщение
Создание двумерного массива int:
C++
1
2
3
4
5
6
7
size_t width = 10;
size_t height = 5;
int **arr = new int*[height];
for(size_t i = 0; i < height; ++i)
{
arr[i] = new int[width];
}
окей окей а как теперь обращатся к этому массиву?

Добавлено через 4 минуты
желательно с примерами :/
0
DaskOFF
112 / 112 / 9
Регистрация: 02.05.2012
Сообщений: 524
Записей в блоге: 1
24.08.2012, 15:18 #9
Цитата Сообщение от KostyaKulakov Посмотреть сообщение
окей окей а как теперь обращатся к этому массиву?

Добавлено через 4 минуты
желательно с примерами :/
мой пример глянуть не судьба? у меня с проверкой и присвоением ...
0
KostyaKulakov
Заблокирован
24.08.2012, 15:22  [ТС] #10
не обисцуй мне твой пример не о чём не сказал. тк тамм ещё и магические константы используются:/
0
DaskOFF
112 / 112 / 9
Регистрация: 02.05.2012
Сообщений: 524
Записей в блоге: 1
24.08.2012, 15:31 #11
какой вопрос, такой ответ

Добавлено через 4 минуты
Цитата Сообщение от KostyaKulakov Посмотреть сообщение
как можно проверить его работу?
Цитата Сообщение от DaskOFF Посмотреть сообщение
C++
1
2
mas[5][5] = 3;
std::cout << mas[5][5];
/////
Цитата Сообщение от KostyaKulakov Посмотреть сообщение
как теперь обращатся к этому массиву?
Цитата Сообщение от DaskOFF Посмотреть сообщение
C++
1
2
mas[5][5] = 3;
std::cout << mas[5][5];

если вам надо узнать как его перебрать - это совершенно другой вопрос и ответ на него
C++
1
2
3
for(int i =0; i !=10; i++)
    for(int j=0; j !=10; j++)
        std::cout << mas[i][j];
1
KostyaKulakov
Заблокирован
24.08.2012, 15:42  [ТС] #12
кхм ладно спасибо и на этом

Добавлено через 4 минуты
хорошо другой вопрос чисто не по теме.

Не по теме:

почему бы microsoft сразу не сделать динамическое выделение под двумерный массив? заместо шамаства с бубном

0
DaskOFF
112 / 112 / 9
Регистрация: 02.05.2012
Сообщений: 524
Записей в блоге: 1
24.08.2012, 15:44 #13
Цитата Сообщение от KostyaKulakov Посмотреть сообщение

Не по теме:

почему бы microsoft сразу не сделать динамическое выделение под двумерный массив? заместо шамаства с бубном

Не по теме:

вектор векторов без танцев с бубном , можно перебирать и через итераторы, и с помощью индексирования, добавление элементов тоже без шаманства.
Пример есть на 1 странице

Если вы имели ввиду, чтобы был класс матрица в стандартной библиотеке, никто не запрещает вам его написать и использовать в работах, чтобы было меньше проблем(зависит от того как напишите)

0
KostyaKulakov
24.08.2012, 15:48  [ТС]
  #14

Не по теме:

вы не поняли. просто двумерный динамик обделили :C. значит одномерный динамический ставится. а для двумерного надо шаманить это не додумка со стороны микрософта. я бы хотел подискусировать на данную тему

0
ForEveR
В астрале
Эксперт С++
7988 / 4747 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
24.08.2012, 15:51 #15
KostyaKulakov, Я задам резонный вопрос. Причем тут мелкомягкие? Они что-ли С и плюсы разработали? Давайте-ка вы будете обсуждать такие вопросы в подходящих разделах (холивары к примеру).
1
24.08.2012, 15:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.08.2012, 15:51
Привет! Вот еще темы с ответами:

Двумерный массив (поменять статический массив на динамический) - C++
Нужно поменять статический массив на динамический с выделением памяти #include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;cstdlib&gt; ...

Не создается динамический двумерный массив - C++
После компиляции приложение запускается с ошибкой: Process returned -1073741819 (0xC0000005) void create_array (int **arr, int M,...

new , delete (двумерный динамический массив) - C++
В данном примере рассмотрена задача: в двумерном динамическом массиве , в каждой строке нужно найти максимальное и поменять его знак на...

Двумерный динамический массив. Разжевать - C++
Для начала. int *array = new int; Инициализируется указатель array - которому присвается адрес переменных типа int, размерностью...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.