Я экспериментировал с 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)
никогда не сработает, верно?