Просто удивление, если C++ имеет стандартный эквивалент Vector2/3/4 (структуры я думаю?) в C#?
Править: Для разъяснения XNA C# Vector2/3/4 "структуры" (я не совсем уверен, что они) в основном содержат 2, 3, или 4 значения плавающих как структура в C++, определенном как:
struct Vector3
{
float x, y, z;
};
Я в основном использовал просто, что код в C++, но я надеялся на стандартную альтернативу и не мог найти ту.
Ничего стандартного, о котором я знаю, но вот некоторый код для начала
http://www.flipcode.com/archives/Faster_Vector_Math_Using_Templates.shtml
Если вы используете C ++ / CLI и ориентированный на Windows и .NET, вы можете использовать Vector2 и т. Д.
Структура Vector3 в C # взята из XNA, а не из библиотек базовых классов.
Эквивалентом C ++ было бы использование XMFLOAT3 .
Хотя в стандартном C ++ нет эквивалента Vector3, существует несколько библиотек линейной алгебры, в которых он есть. Некоторые из них очень маленькие и быстрые:
valarray
во многих случаях может использоваться как Vector2
. Для Vector3 / 4
я не знаю стандартного эквивалента.
Существует также несколько библиотек 3D-графики C ++, подобных XNA, например Ogre3D , Irrlicht и другие. Это может быть немного излишним, если вам нужна только структура Vector3.
Я не верю, что в C ++ есть какие-либо "консервированные" объекты, которые эквивалентны. Вектор STL
- это не одно и то же. По сути, это динамический массив для хранения любых типов значений, тогда как вектор, на который вы ссылаетесь, является классом с добавленными функциями члена, обычно используемыми в графических приложениях XNA (по крайней мере, по моему опыту). Вы понимаете, что Vector2 / 3/4 - это структуры данных. Вы можете очень легко сохранить значения компонентов W, X, Y, Z в своей собственной структуре, но добавленные функции-члены, предоставленные с объектом Vector2 / 3/4, должны быть добавлены вами.