Определите массив C ++ как int [int] array (5); - PullRequest
0 голосов
/ 13 июля 2020

Я экспериментировал с FreeFem++, который по сути представляет собой компилятор c++ с некоторыми добавленными библиотеками.

Как вы можете видеть здесь: https://doc.freefem.org/references/types.html 5-элементный массив можно определить и напечатать как:

int n = 5;
real[int] Ai(n);
for (int i = 0; i < n; i++)
    Ai[i] = i;
cout << Ai << endl;

(обратите внимание, что real - это настраиваемый тип, который на самом деле является двойным).

Как (новичок) c++ разработчик, я бы определили класс real с использованием шаблонов, и с правильным конструктором я мог бы сделать то же самое с некоторым вызовом, например real<int>.

Question

можно ли написать библиотеку c++, чтобы код FreeFem++ работал (в частности, мне нужны квадратные [] скобки, а не <>)?

Моя попытка

Поскольку FreeFem++ открытый исходный код, я попытался взглянуть на код.

https://github.com/FreeFem/FreeFem-sources/blob/master/src/fflib/array_real.cpp

Я не могу толком расшифровать но я предполагаю, что это невозможно, и на самом деле это компилятор FreeFem++, который меняет [int] на какой-то <int>.

Bonus

Иногда я также вижу части кода, такие как

cout << v[] << endl;

, где он печатает вектор, однако для доступа к элементам вектора мне нужно сделать v[][5]. Что это за колдовство? Перегрузка operator[](void) никогда не сработает, верно?

...