Я пишу плагин для программного обеспечения CFD OpenFOAM на C ++. Мой код будет считывать информацию из каждой ячейки в модели (> 100 тыс. Ячеек) для каждого временного шага анализа. У меня есть список списков парных чисел с именем C, который инициализируется нулями на первом временном шаге и изменяется на следующих временных шагах, однако размер остается прежним.
Моя проблема заключается в том, что инициализация списка на первом этапе занимает слишком много времени. В следующие временные шаги я могу легко l oop по всем элементам в списке, выполнить некоторые вычисления для этих значений и сохранить их снова. Однако на первом шаге времени у меня есть пустой список размером 0, что означает, что у меня слишком много добавлений нулей для его инициализации. Я знаю окончательный размер списка, чтобы я мог легко написать
Foam::List<Foam::List<double>> C (size,0.0);
на первом шаге, и моя проблема была бы решена (это спецификация OpenFOAM c список класса https://www.openfoam.com/documentation/guides/latest/api/classFoam_1_1List.html)
Однако, если я хочу определить свой список списков один раз, а затем использовать его на протяжении всех временных шагов, мне нужно определить его в заголовочном файле. В заголовочном файле я не знаю размера, а это значит, что я определяю его как
Foam::List<Foam::List<double>> C;
в заголовочном файле, а затем заполняю его нулями в файле C. И это моя проблема - как инициализировать уже определенный список списков с нулями в файле C?
Если бы это было C#, я мог бы разбейте его на две строки как
List<List<double>> C;
C = new List<List<double>>(size);
и запишите первую строку в файл заголовка и вторую строку в файл C (насколько я понимаю). Как я могу сделать что-то подобное в C ++?
Очень благодарен за помощь в этом.
Спасибо, Дэвид