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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 26, средняя оценка - 4.81
Arcor
4791 / 1792 / 157
Регистрация: 20.11.2009
Сообщений: 5,671
Записей в блоге: 1
#1

Вернуть матрицу из функции - C++

15.04.2012, 15:21. Просмотров 3212. Ответов 26
Метки нет (Все метки)

собственно такой вопрос, любыми методами нужно передать двумерный массив через функцию обратно, я не знаю как сделать это в с++, знаю только как в дельфи сделать это можно, но понадобилось решение в с++

кто в курсе, объясните или напишите пожалуйста небольшой пример

заранее спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.04.2012, 15:21     Вернуть матрицу из функции
Посмотрите здесь:

Считать матрицу из файла, транспонировать и вернуть в другой файл - C++
Добрый день, есть задача по получению матрицы из файла, последующей её обработке и записи в новый файл. Не очень поннимаю, что именно я...

Динамическое выделение памяти внутри функции (что вернуть из функции, если не удалось выделить память?) - C++
такое дело, есть функция, которая выполняет некоторую операцию, функция при успешном выполнении должна вернуть 0, при ниудачном код...

Вернуть массив из функции - C++
Помогите пожалуйста, не получается вернуть массив #include <iostream> using namespace std; int input (int*array2) { int n; ...

Вернуть из функции 2 значения - C++
Как вернуть из функции 2 значения? Нужно вернуть строку и ее длину, но чтобы функция SendData() не вызывалась 2 раза. Сейчас узнаю длину...

Вернуть значение из функции - C++
Приветсвую программисты! Такая проблема, надо возвратить m из функции, а оно возвращает не то что надо вообще 2 ошибки: вот основной...

Вернуть 2 параметра из функции - C++
Доброе время суток. Объясните, пожалуйста как вернуть 2 параметра из функции? Очень желательно на таком примере - Написать функцию...

Вернуть строку из функции. - C++
Как вернуть строку(AnsiString) из функции? int MyTXT (AnsiString Temlate, AnsiString tmp) { TSearchRec SR; int ires; ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт С++
4958 / 3034 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
15.04.2012, 17:50     Вернуть матрицу из функции #21
Arcor, ну вам нужно push_back'ать вектор целиком. Но раз вам известны размеры матрицы, почему бы сразу не создать её целиком и не применять оператор []?
Bers
Заблокирован
15.04.2012, 17:54     Вернуть матрицу из функции #22
Цитата Сообщение от Nekto Посмотреть сообщение
Вы сейчас ломаете мой взгляд на массивы... Почему память, выделенная с помощью new, к которой можно обращаться через индекс, не считается массивом?
Потому что "массив" - это синтаксическая конструкция языка. При помощи которой, вы можете создавать различные типы данных.

Например: int a[10] и int b[20] - это два принципиально разных типа данных.
Так же, эти два принципиально разных типа данных принципиально отличаются от типа данных "указатель".

Соответственно, правомерно сделать проверку типов. Функция может принимать только массив из 10 элементов, и браковать на стадии компиляции все прочие массивы, в том числе - сырые указатели.

Что касается адреса памяти - это всего лишь адрес. "Массив" на языке с++ не является "адресом памяти".
Arcor
4791 / 1792 / 157
Регистрация: 20.11.2009
Сообщений: 5,671
Записей в блоге: 1
15.04.2012, 18:07  [ТС]     Вернуть матрицу из функции #23
Цитата Сообщение от silent_1991 Посмотреть сообщение
Arcor, ну вам нужно push_back'ать вектор целиком. Но раз вам известны размеры матрицы, почему бы сразу не создать её целиком и не применять оператор []?
ну так мне ее сперва заполнить нужно программно, скажем таким методом я буду считывать все из файла в массив, а в другой функции буду уже забирать из этой функции переделанные и обработанные значения. Поэтому и нужно было что-то независимое, и с которого можно было бы забирать результат
Bers
Заблокирован
15.04.2012, 18:08     Вернуть матрицу из функции #24
Цитата Сообщение от silent_1991 Посмотреть сообщение
Мы всё равно не сможем упаковать что-то в массив внутри функции и вернуть именно массив как самостоятельный объект.
Ну это максимум, что можно сделать с обычным массивом.
Нельзя из функции вернуть массив по значению.

C++
1
2
// : error C2090: функция возвращает массив
int (Test1(  int (arr)[10] )   )[10]       {  return arr; }
С чем связанно данное ограничение, лично мне не понятно. С другой стороны, на практике я ни разу не сталкивался с ситуацией, когда очень надо было бы вернуть массив по значению.
silent_1991
Эксперт С++
4958 / 3034 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
15.04.2012, 18:10     Вернуть матрицу из функции #25
Arcor, создаём объект:
C++
1
std::vector<std::vector<type> > matrix(size1, std::vector<type>(size2));
После этого с ним можно работать как с массивом, созданным так:
C++
1
type matrix[size1][size2];
Добавлено через 1 минуту
Цитата Сообщение от Bers Посмотреть сообщение
Нельзя из функции вернуть массив по значению.
Вот в этом и заключалось моё начальное "вернуть полноценный, автономный массив" .
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
15.04.2012, 18:11     Вернуть матрицу из функции #26
Цитата Сообщение от silent_1991 Посмотреть сообщение
Nekto, тут смотря как посмотреть. Можно назвать массивом байт объект любого типа, int, double и т.д.
Ну вот, например, "Уничтожение массива delete[] pointer"(Бьерн Страуструп). Называется именно уничтожение массива. И, раз его можно применить к указателю, то это можно назвать массивом. ИМХО.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.04.2012, 18:16     Вернуть матрицу из функции
Еще ссылки по теме:

Вернуть массив из функции - C++
Допустим есть класс Test: class Test { private: float point; };

Как вернуть string из функции? - C++
Вот вам умные дяди скрин ковырялся я ковырялся так и не понял в чем касяк мб функцию надо по другому записывать или я даже не знаю делал...

Вернуть несколько значений из функции С++ - C++
Здравствуйте!!! Нужна помощь. В общем есть ДЛЛ написанная мною на плюсах в VS 2005,она подключается к проекту на vb 6.0. Сейчас все...

Как вернуть значение функции в С++ - C++
Помогите с задачей

Как вернуть массив из функции? - C++
Please! #include &lt;iostream&gt; using namespace std; int _plus1 (int array ) { for (int i = 0; i &lt; 5; i++){ array...


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

Или воспользуйтесь поиском по форуму:
silent_1991
Эксперт С++
4958 / 3034 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
15.04.2012, 18:16     Вернуть матрицу из функции #27
Nekto, всё дело в уровне абстракции. Раз мы работаем с указателем, под который выделена память, как с массивом, то и думаем про него как про массив. Однако фактически это не массив (массив ячеек памяти - да, но не массив на уровне языка).

Добавлено через 3 минуты

Не по теме:

Пардон, не "под который выделена память", а "который указывает на выделенную памяти". Под указатель память выделяется при создании.

Yandex
Объявления
15.04.2012, 18:16     Вернуть матрицу из функции
Ответ Создать тему
Опции темы

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