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

Можно ли значения двумерного динамического массива присвоить обыкновенному двумерному массиву? - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.71
turin
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 13
11.06.2013, 02:15     Можно ли значения двумерного динамического массива присвоить обыкновенному двумерному массиву? #1
Столкнулся с проблемой с динамическими массивами, можно ли значения двумерного динамического массива присвоить обыкновенному двумерному массиву? Вот объявляю динамический массив строк,
C++
1
2
3
4
5
6
7
string **authors=new string*[10];
    string **titlesOfNumbers= new string*[10];
    for (int i = 0; i < 10; i++) 
    {
        authors[i] = new string [10];
        titlesOfNumbers[i] = new string [10];
    }
и как его значения передать обыкновенному массиву
C++
1
2
string Authors[10][10];
    string TitlesOfNumbers[10][10];
.....и вообще возможно ли это сделать??? Помогите с проблемой...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.06.2013, 02:15     Можно ли значения двумерного динамического массива присвоить обыкновенному двумерному массиву?
Посмотрите здесь:

Присвоить значение полям динамического массива структуры C++
Надо присвоить значения массива а массиву b с помощю функции, и указателей C++
C++ Нужен урок по одномерном и двумерному динамическому массиву
C++ Можно ли определить размер динамического двумерного массива, количество строк и столбцов?
Не получается присвоить значение двумерному массиву char C++
Матрицы (обращение к двумерному массиву) C++
C++ Как присвоить двумерному символьному массиву значение?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
5545 / 3024 / 337
Регистрация: 29.11.2010
Сообщений: 8,192
11.06.2013, 02:22     Можно ли значения двумерного динамического массива присвоить обыкновенному двумерному массиву? #2
turin, просто так из ** нельзя сделать [][].
А чем в цикле не устраивает обычное присваивание для каждого элемента?
turin
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 13
11.06.2013, 02:25  [ТС]     Можно ли значения двумерного динамического массива присвоить обыкновенному двумерному массиву? #3
MrGluck, компилятор ругается! Делал пошаговую отладку, и на том месте где начинается ОБЫЧНОЕ присваивание вылетает из программы....
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
5545 / 3024 / 337
Регистрация: 29.11.2010
Сообщений: 8,192
11.06.2013, 02:30     Можно ли значения двумерного динамического массива присвоить обыкновенному двумерному массиву? #4
Что то не так делаете:
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>
#include <string>
 
int main()
{
    std::string s1[2][2] = { {"abcd", "efg"}, {"hijk", "lmnop"} }, **s2;
    s2 = new std::string*[2];
    for (int i=0; i < 2; i++)
    {
        s2[i] = new std::string[2];
        for (int j=0; j < 2; j++)
            s2[i][j] = s1[i][j];
    }
 
    for (int i=0; i < 2; i++)
    {
        for (int j=0; j < 2; j++)
            std::cout << s2[i][j] << " ";
        delete [] s2[i];
        std::cout << std::endl;
    }
    delete [] s2;
}
turin
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 13
11.06.2013, 02:37  [ТС]     Можно ли значения двумерного динамического массива присвоить обыкновенному двумерному массиву? #5
MrGluck, вот тут
C++
1
2
3
s2[i] = new std::string[2];
        for (int j=0; j < 2; j++)
            s2[i][j] = s1[i][j];
как я понимаю значения простого массива присваиваются динамическому...так? Так мне надо наоборот...
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
5545 / 3024 / 337
Регистрация: 29.11.2010
Сообщений: 8,192
11.06.2013, 02:38     Можно ли значения двумерного динамического массива присвоить обыкновенному двумерному массиву? #6
turin, да без разницы. Там один элемент типа std::string присваивается другому. Массив массиву не присвоишь.
turin
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 13
11.06.2013, 02:39  [ТС]     Можно ли значения двумерного динамического массива присвоить обыкновенному двумерному массиву? #7
MrGluck, спасибо... буду пробовать
-=ЮрА=-
Заблокирован
Автор FAQ
11.06.2013, 11:11     Можно ли значения двумерного динамического массива присвоить обыкновенному двумерному массиву? #8
Цитата Сообщение от turin Посмотреть сообщение
можно ли значения двумерного динамического массива присвоить обыкновенному двумерному массиву?
- да можно

Цитата Сообщение от MrGluck Посмотреть сообщение
ам один элемент типа std::string присваивается другому. Массив массиву не присвоишь.
- я бы не был столь категоричен
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
28
#include <string>
#include <iostream>
using namespace std;
 
int main()
{
    int i, j;
    string ** s_dynamic;
    string s_static[3][2] = 
    {
        {"11", "12"},
        {"21", "22"},
        {"31", "32"}
    };
 
    s_dynamic = new string *[3];
    for(i = 0; i < 3; i++)
        s_dynamic[i] = s_static[i];
 
    for(i = 0; i < 3; i++)
    {
        for(j = 0; j < 2; j++)
            cout<<s_dynamic[i][j]<<" ";
        cout<<endl;
    }
    cin.get();
    return 0;
}
http://codepad.org/X6gIAvSt
Output:
11 12
21 22
31 32
Миниатюры
Можно ли значения двумерного динамического массива присвоить обыкновенному двумерному массиву?  
Tulosba
:)
Эксперт С++
4382 / 3225 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
11.06.2013, 11:17     Можно ли значения двумерного динамического массива присвоить обыкновенному двумерному массиву? #9
s_dynamic[i] обычный указатель. Никакого присваивания массивов тут нет.
-=ЮрА=-
Заблокирован
Автор FAQ
11.06.2013, 11:23     Можно ли значения двумерного динамического массива присвоить обыкновенному двумерному массиву? #10
Цитата Сообщение от turin Посмотреть сообщение
Так мне надо наоборот...
- наоборот аналогично заюзай статик поинтер (указатель)
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
28
29
30
31
32
33
34
35
#include <string>
#include <iostream>
using namespace std;
 
int main()
{
    int i, j;
    string ** s_dynamic;
    string *s_static[3];
 
    s_dynamic = new string *[3];
    for(i = 0; i < 3; i++)
    {
        s_dynamic[i] = new string[2];
        for(j = 0; j < 2; j++)
        {
            s_dynamic[i][j] = '1' + i;
            s_dynamic[i][j]+= '1' + j;
            cout<<s_dynamic[i][j]<<" ";
        }
        cout<<endl;
    }
 
    for(i = 0; i < 3; i++)
        s_static[i] = s_dynamic[i];
 
    for(i = 0; i < 3; i++)
    {
        for(j = 0; j < 2; j++)
            cout<<s_static[i][j]<<" ";
        cout<<endl;
    }
    cin.get();
    return 0;
}
http://codepad.org/NgojIrKH
-=ЮрА=-
Заблокирован
Автор FAQ
11.06.2013, 11:35     Можно ли значения двумерного динамического массива присвоить обыкновенному двумерному массиву? #11
ЗЫ string не очень удачный пример, суть в том чтобы скопировать память из одного блока в другой, блоком в данном случае выступает каждая строка
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
28
29
30
31
32
33
34
#include <string>
#include <iostream>
using namespace std;
 
int main()
{
    int i, j;
    double ** s_dynamic;
    double s_static[3][2];
 
    s_dynamic = new double *[3];
    for(i = 0; i < 3; i++)
    {
        s_dynamic[i] = new double[2];
        for(j = 0; j < 2; j++)
        {
            s_dynamic[i][j] = (1 + i)*10 + (1 + j);
            cout<<s_dynamic[i][j]<<" ";
        }
        cout<<endl;
    }
 
    for(i = 0; i < 3; i++)
        memcpy(s_static[i], s_dynamic[i], 2*sizeof(double));
 
    for(i = 0; i < 3; i++)
    {
        for(j = 0; j < 2; j++)
            cout<<s_static[i][j]<<" ";
        cout<<endl;
    }
    cin.get();
    return 0;
}
http://codepad.org/He1RmStF
Output:
11 12
21 22
31 32
11 12
21 22
31 32
Миниатюры
Можно ли значения двумерного динамического массива присвоить обыкновенному двумерному массиву?  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.06.2013, 14:26     Можно ли значения двумерного динамического массива присвоить обыкновенному двумерному массиву?
Еще ссылки по теме:

C++ Обработка двумерного динамического массива
C++ Присваивание элементов двумерного массива другому двумерному массиву
Реализация механизма обращения к двумерному массиву C++
Cоздание двумерного динамического массива C++
C++ Присвоить значения массиву символов

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

Или воспользуйтесь поиском по форуму:
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
5545 / 3024 / 337
Регистрация: 29.11.2010
Сообщений: 8,192
11.06.2013, 14:26     Можно ли значения двумерного динамического массива присвоить обыкновенному двумерному массиву? #12
-=ЮрА=-, сделаешь из ** [][] или наоборот через обычное присваивание (сразу одно равно другому) - возьму свои слова назад. ТСу ведь именно это нужно.
Yandex
Объявления
11.06.2013, 14:26     Можно ли значения двумерного динамического массива присвоить обыкновенному двумерному массиву?
Ответ Создать тему
Опции темы

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