gpt4 book ai didi

C++ vector>> myVector - 如何使用大小进行初始化?

转载 作者:搜寻专家 更新时间:2023-10-31 00:14:51 27 4
gpt4 key购买 nike

对于一维 vector ,我可以使用这样的东西:

vector<char> letters(5).

如何在初始化 3D vector 时完成同样的事情?

这是我尝试过的:

vector<vector<vector<char> row(farms[0][0].size())> farm(farms[0].size())> 
path(farms.size());

解析起来有点棘手,但这只是第一个嵌套三次并使用与农场 3D vector 相同维度的示例。它会产生这些错误:

p1.cpp:109: error: template argument 1 is invalid p1.cpp:109: error: template argument 2 is invalid p1.cpp:109: error: template argument 1 is invalid p1.cpp:109: error: template argument 2 is invalid p1.cpp:109: error: invalid type in declaration before ‘(’ token

最佳答案

vector<vector<vector<char> row(farms[0][0].size())>显然不是一个类型。

你要找的类型就是你在标题中写的类型:

vector<vector<vector<char> > >

现在,如果您想预先填充每个维度,使其从一开始就是一个5×5×5 vector :

vector<vector<vector<char> > > letters(
5,
vector<vector<char> >(
5,
vector<char>(
5,
'\0'
)
)
);

在每个嵌套级别,第一个参数是所需元素的数量,第二个参数是用于填充每个元素的值。

我认为很明显这不是好的代码。再次问自己是否真的需要三个维度,即使需要,考虑一个大小为 5×5×5 的 1D vector ,并在顶部模拟 3D 索引包装器类型。仅当您的矩阵不总是正方形时,这才是不合适的,但除其他好处外,它还具有大大减少动态分配和破坏局部性的间接寻址的特性。

关于C++ vector<vector<vector<char>>> myVector - 如何使用大小进行初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21536858/

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