gpt4 book ai didi

c++ - vector 是不允许的吗? (错误 : invalid use of ‘auto’ )

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:05:25 26 4
gpt4 key购买 nike

我有:

#include <cstdlib>
#include <vector>

using namespace std;

int main()
{
auto a = -SOME_CONST_MAX;
vector<auto> myVec {a, a, a, a};
}

我不知道 SOME_CONST_MAX 的类型但我想制作一个 -SOME_CONST_MAX 类型的 vector .我假设 vector<auto>会起作用,因为它会从 a 的类型推导出来.

我正在运行这些错误: g++ -std=c++14 main.cpp

main.cpp:9:9: error: invalid use of ‘auto’
vector<auto> myVec {a, a, a, a};
^
main.cpp:9:13: error: template argument 1 is invalid
vector<auto> myVec {a, a, a, a};
^
main.cpp:9:13: error: template argument 2 is invalid
main.cpp:9:32: error: scalar object ‘myVec’ requires one element in initializer
vector<auto> myVec {a, a, a, a};
^

vector<auto>不允许?我做错了什么?

最佳答案

我发现 Slava 的解决方案非常简单优雅

vector<decltype(a)> myVec {a, a, a, a};

但只是为了展示另一种方式,您可以使用variadic 模板函数

template <typename T, typename ... Ts>
std::vector<T> getVect (T const & t, Ts const & ... ts)
{ return { t, ts... } ; }

你可以再次使用auto

auto myVec = getVect(a, a, a, a, a);

关于c++ - vector<auto> 是不允许的吗? (错误 : invalid use of ‘auto’ ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41838776/

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