gpt4 book ai didi

c++ - C++17 中的 vector 初始化

转载 作者:太空狗 更新时间:2023-10-29 20:33:19 25 4
gpt4 key购买 nike

当我用 C++17 编译这段代码时,它运行良好,但除 C++17 之外的任何版本都会抛出错误 [尝试使用 C++14]:

error: missing template arguments before ‘v’
vector 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 编译这个 vector 初始化(按预期)没有任何错误?

最佳答案

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

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

C++17 相反允许“演绎”,这就是为什么即使不指定 vector 中包含的类型,您的代码也能编译。您可以阅读更多相关信息 here .

一般来说,我建议指定类型以提高可读性,即使推导会按照您的意愿进行也是如此。

关于c++ - C++17 中的 vector 初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55987488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com