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

Инициализация двумерного Динамического массива - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 26, средняя оценка - 4.65
daslex
1084 / 494 / 101
Регистрация: 02.08.2011
Сообщений: 2,408
14.12.2012, 19:58     Инициализация двумерного Динамического массива #1
У меня вопрос. Могу ли я создать двумерный динамический массив и инициализировать его своими значениями в коде программы.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
 
using namespace std;
 
int main()
{
    int n=6;
 
    int **M=new int*[n];
      for (int i=0;i<n;i++) M[i]=new int [n];
 
    M[n][n]=     //Попытка инициализации как статического приводит к ошибке
     {   
         1,2,3,4,5,6,
         7,8,9,8,7,6,
         5,4,3,2,1,0,
         1,2,3,4,5,6,
         7,8,9,0,9,1,
         5,3,1,1,3,4
     };
     
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2012, 19:58     Инициализация двумерного Динамического массива
Посмотрите здесь:

C++ Инициализация двумерного массива
C++ Инициализация динамического массива
C++ Инициализация двумерного массива
C++ Инициализация Динамического массива
C++ Инициализация двумерного массива в классе
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
yekka
384 / 148 / 8
Регистрация: 12.05.2011
Сообщений: 450
14.12.2012, 20:01     Инициализация двумерного Динамического массива #2
Как-то так должно быть:
C++
1
2
3
4
5
6
    M[6][3]= 
     {   
         { 1,2,3,4,5,6 }, 
         { 7,8,9,8,7,6 }, 
         { 5,4,3,2,1,0 }
     };
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
14.12.2012, 20:04     Инициализация двумерного Динамического массива #3
Цитата Сообщение от yekka Посмотреть сообщение
Как-то так должно быть:
Так у него массив динамический
yekka
384 / 148 / 8
Регистрация: 12.05.2011
Сообщений: 450
14.12.2012, 20:07     Инициализация двумерного Динамического массива #4
Цитата Сообщение от go Посмотреть сообщение
Так у него массив динамический
тогда в цикле только

Добавлено через 1 минуту
и вообще, что за бред? какой динамический массив с заранее известным инициализатором?
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
14.12.2012, 20:12     Инициализация двумерного Динамического массива #5
Цитата Сообщение от yekka Посмотреть сообщение
и вообще, что за бред? какой динамический массив с заранее известным инициализатором?
Вот тут и оно. Сразу напрашивается std::vector с инициализацией в стиле C++11.
daslex
1084 / 494 / 101
Регистрация: 02.08.2011
Сообщений: 2,408
14.12.2012, 20:18  [ТС]     Инициализация двумерного Динамического массива #6
Я понимаю, что вектор напрашивается.
Но меня больше массив интересует.

Я бы сказал, что это не бред, сказал бы моя потребность. Возможно не осуществимая.

Не по теме:

А вообще люди бредили, бредили и полетели в космос

yekka
384 / 148 / 8
Регистрация: 12.05.2011
Сообщений: 450
14.12.2012, 20:23     Инициализация двумерного Динамического массива #7
Цитата Сообщение от daslex Посмотреть сообщение
двумерный динамический массив
в твоем коде, кстати, не двумерный массив, а вполне себе одномерный массив указателей.
daslex
1084 / 494 / 101
Регистрация: 02.08.2011
Сообщений: 2,408
14.12.2012, 20:27  [ТС]     Инициализация двумерного Динамического массива #8
Цитата Сообщение от yekka Посмотреть сообщение
одномерный массив указателей.
Не отводите тему. Двумерный динамический массив это одномерный массив указателей на одномерные массивы и есть.

Меня интересует только вопрос, который я спросил
yekka
384 / 148 / 8
Регистрация: 12.05.2011
Сообщений: 450
14.12.2012, 20:34     Инициализация двумерного Динамического массива #9
Цитата Сообщение от daslex Посмотреть сообщение
Двумерный динамический массив это одномерный массив указателей на одномерные массивы и есть.
это не так.


А по теме можно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <cstring>
#include <iostream>
 
using namespace std;
 
const int Etalon[6][6]=
{
    1,2,3,4,5,6,
    7,8,9,8,7,6,
    5,4,3,2,1,0,
    1,2,3,4,5,6,
    7,8,9,0,9,1,
    5,3,1,1,3,4
};
 
int main()
{
    int (*M)[6] = new int[6][6];
    memcpy(M, Etalon, sizeof(Etalon));
    std::cout << M[4][4] << std::endl;
    return 0;
}
Заметьте, с использованием настоящего двумерного массива
daslex
1084 / 494 / 101
Регистрация: 02.08.2011
Сообщений: 2,408
14.12.2012, 20:40  [ТС]     Инициализация двумерного Динамического массива #10
Ну и почему я не могу задать n?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int main()
{
    int n=6;
 
    int (*M)[n] = new int[n][n];
    memcpy(M, Etalon, sizeof(Etalon));
    std::cout << M[4][4] << std::endl;
 
    for (int i=0;i<6;i++)
    {
        for (int j=0;j<N;j++)
        {
          cout<<M[i][j]<<"  ";
        }
        cout<<endl;
    }
    return 0;
}
Вы с динамическим программированием совсем не знакомы?
yekka
384 / 148 / 8
Регистрация: 12.05.2011
Сообщений: 450
14.12.2012, 20:43     Инициализация двумерного Динамического массива #11
Цитата Сообщение от daslex Посмотреть сообщение
Вы с динамическим программированием совсем не знакомы?
боюсь снова Вас разочаровать, но, строго говоря, Ваш вопрос никак не относится к динамическому программированию
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2012, 20:52     Инициализация двумерного Динамического массива
Еще ссылки по теме:

Инициализация N-мерного динамического массива C++
C++ Инициализация динамического массива
C++ Инициализация двумерного массива

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

Или воспользуйтесь поиском по форуму:
daslex
1084 / 494 / 101
Регистрация: 02.08.2011
Сообщений: 2,408
14.12.2012, 20:52  [ТС]     Инициализация двумерного Динамического массива #12

Не по теме:

Ваше не знание вас не красит. Я Вам вопрос по вашей программе. Но вы не можете ответить. Зато чего-то доказываете. Глупо.



Ответ на мой изначальный вопрос не получен.

Добавлено через 2 минуты
Показать фокус?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <cstring>
#include <iostream>
 
using namespace std;
 
 
int main()
{
    const int N=3;
    int M[3][3]=
    {
        0,1,2,
        3,4,5,
        6,7,8
    };
 
    for (int i=0;i<N*N;i++)cout<<M[0][i]<<"  ";
    return 0;
}
Чем ваш тип массивов отличается от одномерного?
Yandex
Объявления
14.12.2012, 20:52     Инициализация двумерного Динамического массива
Ответ Создать тему
Опции темы

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