Перед актуальным вопросом небольшая прелюдия. Я не беспокоюсь о безопасности, я забочусь о производительности. Я ЗНАЮ, что это неправильно, и я знаю, что это очень хакерски, однако это довольно быстро.
vector<float> result = move(*((vector<float>*)&vertices));
Этот код злоупотребляет приведениями и указателями в стиле C, чтобы заставить компилятор интерпретировать массив левой стороны vertices
, который представляет собой вектор компактного типа, в котором все поля являются числами с плавающей точкой как массив чисел с плавающей точкой.
т.е.
struct vertex {
float x;
float y;
float z;
}
vector<vertex> vertices;
Это работает и делает то, что это необходимо, однако это несколько трудно читать. Я хочу знать, есть ли другой способ достижения того же результата более читабельным способом.