我正在寻找一种方法来创建一个 C++ 向量,该向量将保存类对象(它是多维数组 - 3D 坐标系位置映射器)和以某种方式描述它的 int 对象。
我发现了很多多维单一类型向量的例子,比如
vector <vector<int>> vec (4, vector<int>(4));
我需要一个动态结构,它可以随着时间的推移在堆中增长/缩小,并具有向量类型的灵活性。
// Your position object, whatever the declaration may be
struct Position { int x, y, z; };
struct Connection {
Position position;
int strength;
};
// This is what you want your node class to be
// based on the comment you gave.
struct Node {
Position position;
std::vector<Connection> connections;
};
// A vector is dynamic and resizable.
// Use std::vector::push_back and std::vector::emplace_back methods
// insert elements at the end, and use the resize method to modify
// the current size and capacity of the vector.
std::vector<std::vector<std::vector<Node>>> matrix;
另一种方法是将 a 定义Connection
为std::pair<Position, int>
,但这不是很好,因为如果您以后想向 Connection 添加更多信息,则必须更改比应有的更多代码。
如果要调整整个多维数组的大小,则必须使用循环一一遍历所有向量并调用该resize
方法。
您只能从 a 中获得“类型灵活性”,std::vector
即让它存储多态类型。根据您的示例,您可能需要 a std::vector
of struct
s:
struct s
{
int i;
double d;
char c;
bool b;
};
std::vector<s> vec;
// elements can be accessed as such:
auto i = vec[0].i;
auto d = vec[0].d;
auto c = vec[0].c;
auto b = vec[0].b;