gpt4 book ai didi

c++ - 带有初始化的 Vector 工厂不工作

转载 作者:太空狗 更新时间:2023-10-29 23:43:17 25 4
gpt4 key购买 nike

我试图创建一个 vector 工厂,它创建一个由 1 值组成的指定大小 s 的 vector ,但没有按预期工作。

template<size_t s>
constexpr std::vector<int>& vector_factory()
{
std::vector<int> v(s, 1);
return v;
}


int main(int argc, char* argv[])
{
constexpr size_t s = 10;
std::vector<int> v1 = vector_factory<s>();
std::vector<int> v2 = vector_factory<s>();
}

由于大量分配尝试,我收到运行时错误。但是,如果我尝试像这样实现它,它会正常工作。

constexpr size_t s = 10;
std::vector<int> v1(s, 1);
std::vector<int> v2(s, 1);

我做错了什么?

最佳答案

运行时错误不是由于大量的分配尝试,而是由于两个悬空引用。函数签名

constexpr std::vector<int>& vector_factory();

有两个问题。首先,它无法编译,因为 std::vector 没有 constexpr 构造函数。其次,您必须按值而不是按引用返回对象。编译器甚至应该警告您这个问题。如果您将以上内容更改为

std::vector<int> vector_factory() { /* As before... */ }

一切都应该按预期工作。

关于c++ - 带有初始化的 Vector<int> 工厂不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55138096/

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