当我使用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::vector
C ++ 17中的声明和/或初始化是否已更改?谁能解释C ++ 17为何编译此向量初始化(按预期)而没有任何错误?
在C ++ 17之前,您必须通过模板指定向量的类型:
std::vector<int> v{1, 2, 3};
相反,C ++ 17允许“推演”,这就是即使没有指定向量中包含的类型也可以编译代码的原因。您可以在此处了解更多信息。
通常,我建议指定可读性的类型,即使演绎可以实现您想要的效果。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句