Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
KostyaKulakov
Заблокирован
#1

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

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

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

Двумерный динамический массив
Здравствуйте, подскажите пожалуйста где ошибка? реализовал 2 фукнции ввода и...

Динамический двумерный массив
Здравствуйте, начал недавно учить с++, смотрю видеоуроки. Дошел до этой темы и...

Динамический двумерный массив
Если число находится в интервале от 100 до 110, то используя подпрограмму, в...

Двумерный динамический массив
Необходимо ввести с клавиатуры количество строк и столбцов массива(матрица...

Двумерный динамический массив
Здравствуйте, задание такое: "Описать двумерный массив R целых чисел,...

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

20
Leomana
59 / 59 / 8
Регистрация: 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 / 34
Регистрация: 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 / 42
Регистрация: 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
177 / 126 / 24
Регистрация: 12.01.2012
Сообщений: 624
24.08.2012, 13:04 #5
А интересно, как наиболее грамотно создать двумерный вектор и как его лучше обходить?
0
DaskOFF
112 / 112 / 42
Регистрация: 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
Эксперт С++
338 / 302 / 36
Регистрация: 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 / 42
Регистрация: 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 / 42
Регистрация: 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 / 42
Регистрация: 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
В астрале
Эксперт С++
7994 / 4753 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
24.08.2012, 15:51 #15
KostyaKulakov, Я задам резонный вопрос. Причем тут мелкомягкие? Они что-ли С и плюсы разработали? Давайте-ка вы будете обсуждать такие вопросы в подходящих разделах (холивары к примеру).
1
KostyaKulakov
Заблокирован
24.08.2012, 15:55  [ТС] #16
Холивар или обделение многомерного динамического массива кому интересно сюда.
0
ForEveR
24.08.2012, 15:55
  #17

Не по теме:

KostyaKulakov, Я же пошутил... Ну причем тут Майкрософт? Блин...

0
KostyaKulakov
24.08.2012, 15:56  [ТС]
  #18

Не по теме:

могли бы с компилятором чонить придумать, чтобы он сразу выполнял эти операции

0
rangerx
1941 / 1550 / 478
Регистрация: 31.05.2009
Сообщений: 2,913
24.08.2012, 15:59 #19
Цитата Сообщение от Buckstabue Посмотреть сообщение
А интересно, как наиболее грамотно создать двумерный вектор и как его лучше обходить?
Наиболее грамотно создать над всем этим делом обёртку в виде класса.
0
ForEveR
В астрале
Эксперт С++
7994 / 4753 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
24.08.2012, 17:33 #20
KostyaKulakov, Зачем? Есть С++/CLI, есть C#, а в нативные плюсы не нужно ничего этого, более того, если есть нужда в матрицах стоит пользоваться готовыми библиотеки boost::ublas к примеру.
1
24.08.2012, 17:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.08.2012, 17:33
Привет! Вот еще темы с решениями:

Двумерный динамический массив
Выскакивает ошибка Ошибка C2440 =: невозможно преобразовать &quot;int *&quot; в &quot;int...

Двумерный массив (поменять статический массив на динамический)
Нужно поменять статический массив на динамический с выделением памяти ...

Не создается динамический двумерный массив
После компиляции приложение запускается с ошибкой: Process returned...

Динамический двумерный вещественный массив
помогите, пожалуйста создать динамический двумерный вещественный массив :help:


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

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

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