Предположим, у нас есть внешняя библиотека, которая может выполнять вычисления очень быстро (большую часть времени многопоточность) на массиве чисел с плавающей запятой двойной точности. Для удобства я пишу свой код объектно-ориентированным образом, поэтому получаю массив объектов. Каждый объект имеет свойство, имеющее двойное значение. Наивный подход, чтобы сделать использование мощной внешней библиотеки что-то вроде этого:Умный способ сделать эффективную оболочку для библиотеки производительности
double temp[N];
for i from 1 to N
temp[i] = objectArray[i].property;
end
Однако, это требует времени и дополнительной памяти для хранения Темп массива. Есть ли лучший способ сделать это?
Это общий вопрос, но я в основном хочу этого в C++.
Если ваша библиотека выполняет алгоритм на массиве и _only_ массив, то это единственный способ. Если ваша библиотека может выполнить ее по-другому, нам нужно будет немного узнать об этой библиотеке. – Unda
Есть несколько вариантов, о которых я могу думать: 1. Удерживайте двойного [] члена рядом с вами objectArray и убедитесь, что они всегда синхронизированы. 2. Лучше всего заменить двойное свойство двойным *, указывающим на double []. Это избавит вас от написания кода синхронизации –
Не зная библиотеки 'API', трудно найти предложения. Вот почему стиль интерфейса STL настолько силен, что они обобщили концепцию указателей как * итераторов *. Если ваша библиотека должна была принимать * итераторы *, это было бы намного проще. Есть ли что-то подобное в «API»? – Galik