【问题标题】:std::vector with a number in the second template parameter, can't find the definition on the c++ referncestd::vector 在第二个模板参数中有一个数字,在 c++ 引用中找不到定义
【发布时间】:2021-01-17 19:14:35
【问题描述】:

我想我很久以前就问过这个问题,但找不到。 我看到这个代码sn-p。

template <
    unsigned int N
    >
class pyramid_down : noncopyable
{
public:

    COMPILE_TIME_ASSERT(N > 0);

    template <typename T>
    vector<double,2> point_down (
        const vector<T,2>& p
    ) const
    {
        const double ratio = (N-1.0)/N;
        return (p - 0.3)*ratio;
    }

vector 似乎是一个带有两个元素的向量。我在哪里可以找到对此的 c++ 语言解释?我在这里找不到它:http://www.cplusplus.com/reference/vector/vector/

【问题讨论】:

  • 你从哪里得到的代码?你确定它实际上是std::vector
  • 单靠 sn-p 无法完全解释那里发生了什么。
  • std::vector 模板具有指定分配器类型的第二种类型。 std::vector&lt;double, 2&gt; 无效。你的vector 类型,不管它是什么,都是一些与std::vector 不同的非标准类型
  • 谢谢大家,这是来自dlib.net的dlib::vector
  • @ChanKim 为什么你的模板没有声明dlib::vector 而只是vector?由于没有指定命名空间,您的代码对这些类型的错误敞开了大门。

标签: c++ templates vector stl


【解决方案1】:

不是std::vector

std::vector 在其第二个模板参数中不接受整数,也没有定义operator-,所以很明显,此示例中的vector 不是std::vector,而是vector 的不同类型.也许是一个数学向量,或者一个图形向量,谁知道呢。从给定的有限sn-p中无法得知。

【讨论】:

  • 是的,没错。当我看到 p -0.3 时,我觉得这很奇怪,应该多看一些。它是 dlib 中的向量。 namespace dlib { template &lt; typename T, long NR = 3 &gt; class vector;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-24
  • 1970-01-01
  • 2019-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-30
相关资源
最近更新 更多