![]() |
C++: функция, возвращающая многомерное значение Делаю первые шаги в освоении С++. Нужно, чтобы возвращаемое значение функции было массивом. Как это сделать (если вообще возможно)? Иными словами, переведите, пожалуйста, с паскаля на С++: Type aaa : array[1..20] of integer; Function fff(...) : aaa; Begin ... fff[1]:=a; fff[2]:=b; ... End; |
Возможно, но лучше создавать массив в основном коде, и передавать в функцию как указатель. С++ - это не 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 ; ** |
Двойные звездочки - это открывающая фигурная скобка. Дурной фильтр. |
0-Дюша > 1. Зачем тебе С++? Недоязык, говорят. :) 2. std::vector для начала спасет отца русской демократии. :) |
#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; ** |
Но, строго говоря, vector - это динамический массив. Поэтому можно посмотреть в сторону std::array (если компилятор поддерживает C++11). |
[quote=Ахелой;36756662] 0-Дюша > 1. Зачем тебе С++? Недоязык, говорят. :) 2. std::vector для начала спасет отца русской демократии. :) [/quote] Это говорят недопрограммисты. Дюша - по мне так самый лучший вариант, при отсутствии оберток, это создать свой класс массива. Который будет и память выбелять и освобождать. Да и в дальнейшем много полезного поимеешь. |
Текущее время: 12:30. Часовой пояс GMT +3. |