Форум на Kuban.ru (http://forums.kuban.ru/)
-   Разработка программ (http://forums.kuban.ru/f1024/)
-   -   C++: функция, возвращающая многомерное значение (http://forums.kuban.ru/f1024/c_funkciya_vozvrashayushaya_mnogomernoe_znachenie-6132861.html)

Diusha 28.09.2014 05:52

C++: функция, возвращающая многомерное значение
 
Делаю первые шаги в освоении С++.
Нужно, чтобы возвращаемое значение функции было массивом. Как это сделать (если вообще возможно)?
Иными словами, переведите, пожалуйста, с паскаля на С++:

Type aaa : array[1..20] of integer;

Function fff(...) : aaa;
Begin
...
fff[1]:=a; fff[2]:=b; ...
End;

NTFS_ 28.09.2014 15:59

Возможно, но лучше создавать массив в основном коде, и передавать в функцию как указатель. С++ - это не C#, и даже не Паскаль. С памятью лучше не играться.

Если же нужно принципиально...

#include <stdio.h>
#include <conio.h>

int * createArray(int sz) **
int * r = new int[sz] ;
for (int i=0; i<sz; i++) r[i]=i*i ;
return r ;
**


int main() **

const int N = 10 ;
int * arr = createArray(N) ;

for (int i=0; i<N; i++)
printf("arr[%d]=%d\n",i,arr[i]) ;

delete arr ;

getch() ;
return 0 ;

**

NTFS_ 28.09.2014 16:00

Двойные звездочки - это открывающая фигурная скобка. Дурной фильтр.

Achelous 08.10.2014 23:55

0-Дюша >
1. Зачем тебе С++? Недоязык, говорят. :)
2. std::vector для начала спасет отца русской демократии. :)

Achelous 09.10.2014 00:03

#include <vector>

typedef std::vector<int> IntArray;

IntArray MyMegaFunction()
**
IntArray result;
result.push_back(0);
result.push_back(1);
...
return result;
**

int main(int argc, char** argv)
**
IntArray array = MyMegaFunction();
// TODO something
return 0;
**

Achelous 09.10.2014 00:04

Но, строго говоря, vector - это динамический массив. Поэтому можно посмотреть в сторону std::array (если компилятор поддерживает C++11).

kotos 22.10.2014 02:57

[quote=Ахелой;36756662] 0-Дюша &gt; 1. Зачем тебе С++? Недоязык, говорят. :) 2. std::vector для начала спасет отца русской демократии. :) [/quote]
Это говорят недопрограммисты.
Дюша - по мне так самый лучший вариант, при отсутствии оберток, это создать свой класс массива. Который будет и память выбелять и освобождать. Да и в дальнейшем много полезного поимеешь.


Текущее время: 11:43. Часовой пояс GMT +3.