gpt4 book ai didi

c++ - vector 迭代器不兼容

转载 作者:行者123 更新时间:2023-11-30 02:10:41 25 4
gpt4 key购买 nike

我有一些类(class),我想在其中使用大量 vector 。

class Bar {
Bar ();
std::vector<Foo> * _grid;
void someFunction ();
}

Bar::Bar () {
_grid = (std::vector<Foo> *)malloc(_gridSize * sizeof(std::vector<Foo>);
memset(_grid, 0, _gridSize * sizeof(std::vector<Foo>);
}

void Bar::someFunction () {
int index = 0;
std::vector<Foo> someVariable = _grid[index];
}

但是,当我调用 someFunction() 时,只要 _grid[index ]。如果 vector 为空,则有效。

我已经阅读了有关无效迭代器产生的错误消息,但是,由于此时我没有更改 vector 上的任何内容,所以我不明白这里有什么问题。

最佳答案

您几乎肯定不想动态分配 vector ;只需将其作为类(class)成员包括在内:

class Bar { 
std::vector<Foo> _grid;
};

如果你真的想动态分配vector,你想使用new,它构造了vector。正如现在所写的那样,您为 vector malloc 空间并将 vector 占用的所有字节设置为零。您永远不会为分配的对象调用 std::vector 构造函数,因此您不能将其用作 std::vector

确保你有 a good introductory C++ book从中学习语言。如果您不了解 C++ 内存模型和对象模型,现在您可以编写正确的 C++ 代码。

关于c++ - vector 迭代器不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4383868/

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