typedef Vec <int,2 =“”> Vec2i;这个定义是什么意思?</int,>

时间:2014-08-05 18:02:49

标签: c++

大约5年后我回到了C ++。我快点回顾一下。但是有一个我不知道的定义。

std::vector是一个类模板。

typedef Vec<int, 2> Vec2i;
typedef Vec<int, 3> Vec3i;
typedef Vec<int, 4> Vec4i;
typedef Vec<int, 6> Vec6i;
typedef Vec<int, 8> Vec8i; 

我不知道这些数字是多少?这是指字节吗?

来自core.hpp

/*!
  A short numerical vector.

  This template class represents short numerical vectors (of 1, 2, 3, 4 ... elements)
  on which you can perform basic arithmetical operations, access individual elements using [] operator etc.
  The vectors are allocated on stack, as opposite to std::valarray, std::vector, cv::Mat etc.,
  which elements are dynamically allocated in the heap.

  The template takes 2 parameters:
  -# _Tp element type
  -# cn the number of elements

  In addition to the universal notation like Vec<float, 3>, you can use shorter aliases
  for the most popular specialized variants of Vec, e.g. Vec3f ~ Vec<float, 3>.
*/
template<typename _Tp, int cn> class Vec : public Matx<_Tp, cn, 1>

1 个答案:

答案 0 :(得分:2)

猜测,Vec是一个表示N维数学向量的类模板,如下所示:

template <typename T, int N> class Vec { /* ... */ };

数字指定向量中的元素数量,即具有整数分量的2D矢量,具有整数分量的3D矢量等。

但没有代码,就无法说出来。