gpt4 book ai didi

c++ - vector 容量显示为 0,即使它是保留的

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

我有一个类,它有一个 vector 作为成员变量之一。在构造函数中,保留 vector 容量(类 VecUser 使用“测试”对象):

class Test {
public:
Test(uint32_t size) {
this->v.reserve(size);
std::cout << v.capacity() << std::endl; // this prints 'size'
}
vector<uint32_t>& getV() { return v; }
private:
vector<uint32_t> v;
};

class VecUser {
public:
VecUser() {}
private:
void func() {
Test* test = new Test(32); // This prints '32'

vector<uint32_t> v = test->getV();
std::cout << v.capacity() << std::endl; // This prints '0'
}
};

我认为 func() 函数中的 cout 必须打印“32”,而不是“0”。

但是,运行之后,它打印出 0。

为什么预留vector显示容量为0?

最佳答案

这里

vector<uint32_t> v = test->getV();

制作拷贝。 v 实际上不是一个引用,所以即使你返回一个,它也必须制作一个拷贝。因为它是拷贝,所以不需要相同数量的保留空间。如果您实际上是这样获得引用的:

vector<uint32_t> &v = test->getV();

两次输出都是32

关于c++ - vector 容量显示为 0,即使它是保留的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56426888/

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