1 | |
Вернуть матрицу из функции15.04.2012, 15:21. Показов 17523. Ответов 26
Метки нет (Все метки)
собственно такой вопрос, любыми методами нужно передать двумерный массив через функцию обратно, я не знаю как сделать это в с++, знаю только как в дельфи сделать это можно, но понадобилось решение в с++
кто в курсе, объясните или напишите пожалуйста небольшой пример заранее спасибо
0
|
15.04.2012, 15:21 | |
Ответы с готовыми решениями:
26
Заполнить матрицу случайными числами. Вернуть матрицу на 90o по часовой стрелке Как вернуть матрицу из функции Как вернуть матрицу из потока? Считать матрицу из файла, транспонировать и вернуть в другой файл |
15.04.2012, 15:58 | 2 |
0
|
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
15.04.2012, 16:21 | 3 |
Arcor, все изменения с массивом-параметром будут отражены на реальном массиве, который был передан в функцию в качестве аргумента.
0
|
15.04.2012, 16:54 [ТС] | 4 | ||||||||||
мне return'ом нужно
чтобы я мог забрать результат из функции скажем у нас массив 10 х 10 и заполненный "таблицей умножения" забрать, скажем в переменную целочисленную х
как-то так как параметром вернуть я знаю, а как результатом функции не знаю Добавлено через 4 минуты HighPredator, по дельфийски вот так
0
|
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
15.04.2012, 17:07 | 5 |
Arcor, вернуть массив не получится. Можно вернуть обёртку - std::vector (динамический массив), std::array (обёртка над статическим массивом) (стандарт C++0x).
1
|
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
15.04.2012, 17:15 | 7 |
Двумерный вектор - std::vector<std::vector<type> >.
1
|
15.04.2012, 17:18 [ТС] | 8 |
от спасибо, я немного по другому пробовал записать
и еще, один вопрос о векторе, мне тут говорит знакомый что вычитал, якобы если работать с вектором работа замедляется во много раз Я не поверил этому сказанию, а как оно на самом деле? Выгодно или нет скажем для работы с матрицей 20 000 х 20 000 ? естественно используя несколько потоков для обработки, ибо это очень большая величина для обработки
0
|
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
15.04.2012, 17:24 | 10 |
Arcor, замедляется в несколько раз по сравнению с чем? Если со статическим массивом, и при этом не зарезервировать сразу всю нужную память, а выделять её инкрементно - замедляется, потому что освобождение и выделение памяти, а также копирование - дорогая операция. Если выделить всю нужную память сразу - то разницы не будет. Другой вопрос, что на стеке не удастся выделить много памяти, в отличие от кучи.
1
|
347 / 292 / 37
Регистрация: 23.03.2012
Сообщений: 838
|
||||||
15.04.2012, 17:29 | 11 | |||||
Я наверное что-то не понимаю... Но указатель же можно вернуть.
0
|
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
15.04.2012, 17:30 | 12 |
Nekto, указатель - не массив. Вы можете вернуть полноценный массив из функции, самостоятельный, автономный массив?
1
|
15.04.2012, 17:30 [ТС] | 13 |
ммм, не правильно выразился, имел ввиду что работа очень медленная
ну это то понятно сейчас уговорю товарища, использовать вектор для передачи матрицы А то он навыдумывает сейчас... всем спасибо
0
|
347 / 292 / 37
Регистрация: 23.03.2012
Сообщений: 838
|
|
15.04.2012, 17:31 | 14 |
0
|
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
15.04.2012, 17:33 | 15 |
Nekto, в данном случае выделение и освобождение памяти разнесены логически, что считается не очень хорошим тоном. И да, это не массив, это указатель на область памяти. Пускай мы и обращаемся с ним как с массивом.
1
|
347 / 292 / 37
Регистрация: 23.03.2012
Сообщений: 838
|
|
15.04.2012, 17:38 | 16 |
0
|
Заблокирован
|
||||||
15.04.2012, 17:40 | 17 | |||||
http://codepad.org/GmdK3iLj
На с++ не существует "динамических массивов".
1
|
347 / 292 / 37
Регистрация: 23.03.2012
Сообщений: 838
|
|
15.04.2012, 17:42 | 18 |
Вы сейчас ломаете мой взгляд на массивы... Почему память, выделенная с помощью new, к которой можно обращаться через индекс, не считается массивом?
0
|
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
15.04.2012, 17:46 | 19 |
Bers, я не понял, к чему это. Мы всё равно не сможем упаковать что-то в массив внутри функции и вернуть именно массив как самостоятельный объект. В данном случае мы завязаны на массиве-параметре и возвращаем именно его. В случае с вектором мы можем тягать наш вектор по коду, создавать вектор в одной функции и передавать в другую как результат, а не как ссылочный параметр и т.д.
Добавлено через 1 минуту Nekto, тут смотря как посмотреть. Можно назвать массивом байт объект любого типа, int, double и т.д.
0
|
15.04.2012, 17:47 [ТС] | 20 |
а как к нему применить push_back() ??? оО
чтобы писать в строки и в столбцы
0
|
15.04.2012, 17:47 | |
15.04.2012, 17:47 | |
Помогаю со студенческими работами здесь
20
Как в функции вернуть значение, а потом продолжить работу этой функции? Динамическое выделение памяти внутри функции (что вернуть из функции, если не удалось выделить память?) Вернуть из функции объект класса-родителя функции Вернуть массив из функции Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |