gpt4 book ai didi

c++ - 初始化具有预留容量的嵌套 vector 的子 vector

转载 作者:行者123 更新时间:2023-11-30 04:25:39 31 4
gpt4 key购买 nike

我想创建 vector 的 vector ,这样每个子 vector 都具有预定义的容量但未初始化。

这里的代码没有做我想做的事情:

#include <iostream>
#include <vector>

using namespace std;

int main()
{
vector<int> tVec;
tVec.reserve( 5 );
cout<<"tVec Size: "<<tVec.size()<<", capacity: "<<tVec.capacity()<<endl;

vector< vector<int> > tmpVecVec( 2, tVec );
cout<<"tmpVecVec[0] Size: "<<tmpVecVec[0].size()<<", capacity: "<<tmpVecVec[0].capacity()<<endl;
cout<<"tmpVecVec[1] Size: "<<tmpVecVec[1].size()<<", capacity: "<<tmpVecVec[0].capacity()<<endl;
}

上面的输出是:

tVec Size: 0, capacity: 5
tmpVecVec[0] Size: 0, capacity: 0
tmpVecVec[1] Size: 0, capacity: 0

我想知道怎样才能得到下面的结果

tVec Size: 0, capacity: 5
tmpVecVec[0] Size: 0, capacity: 5
tmpVecVec[1] Size: 0, capacity: 5

当然,如果我用 resize 替换 reserve 或在 tVec 的构造函数中提供大小 5,我可以这样做。但是,我可以不使用这些方法来做到这一点吗?

工作代码链接:http://ideone.com/PBXeP

最佳答案

如果您想要使用 vector 描述的行为,这就是您应该使用的。 (它可能无法满足您后来提出的所有要求。)

int size = 5, capacity = 5;
vector<vector<int>> tmpVecVec(size);
for (auto& vec: tmpVecVec)
vec.reserve(capacity);

关于c++ - 初始化具有预留容量的嵌套 vector 的子 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12021373/

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