C ++ 17中的向量初始化

当我使用C ++ 17编译此代码时,它可以很好地工作,但是除C ++ 17之外的任何版本都将引发错误[与C ++ 14一起尝试]:

错误:“ v”
向量v {1、2、3}之前缺少模板参数

这是我正在使用的代码片段:

#include <vector>
#include <iostream>

using std::vector;
using std::cout;

int main() {

    // Vector initialization
    vector v {1, 2, 3};

    for (int i=0; i < v.size(); i++) {
      cout << v[i] << "\n";
    }
}

std::vectorC ++ 17中的声明和/或初始化是否已更改?谁能解释C ++ 17为何编译此向量初始化(按预期)而没有任何错误?

巴纳克

在C ++ 17之前,您必须通过模板指定向量的类型:

std::vector<int> v{1, 2, 3};

相反,C ++ 17允许“推演”,这就是即使没有指定向量中包含的类型也可以编译代码的原因。您可以在此处了解更多信息

通常,我建议指定可读性的类型,即使演绎可以实现您想要的效果。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章