gpt4 book ai didi

C++:结构 vector 的 vector 问题

转载 作者:行者123 更新时间:2023-11-30 01:09:55 25 4
gpt4 key购买 nike

<分区>

我需要一个可变大小的二维矩阵,其中每个元素都是一个结构。行数在编译时已知并且永远不会改变。每行的列数不同。我用 vector 的 vector 实现了这个,但我不知道我是否做对了:

struct MyStruct {
int a, b;
MyStruct(int arg_a, int arg_b) { a = arg_a; b = arg_b; };
};

int main(void) {
vector < vector< MyStruct > > myVVOfStructs;
myVVOfStructs.reserve(10); // Intended to reserve 10 rows of variable size vectors

vector< MyStruct > tmpVector = myVVOfStructs[5];
tmpVector.push_back(MyStruct(10, 20));

}

这是正确的做法吗?当我将上面的代码片段单独放入 C++ 文件时,它就起作用了。但是,在我更大的 C++ 程序中,上面的操作失败并显示此消息

terminate called after throwing an instance of 'std::bad_alloc'

所以,我这样做的方式肯定有问题,但它很复杂,因为它在一个简单的 C++ 源文件中工作,但在更大更复杂的程序中却不行。有任何想法吗?有更好的方法吗?

后来的编辑:在另一个题为“我们什么时候应该使用 vector 的 reserve()?”的问题中有这个问题的答案。问题是为了找到那个答案,我已经必须知道 reserve() 是问题的原因。就目前而言,我永远不会阅读带有该标题的页面,因为我不知道 reserve() 是我出现问题的原因。如果我已经知道这一点,那么我就会知道足够多的知识来自己解决问题。

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