在堆栈中存储结构体

C++: Storing structs in a stack

本文关键字:结构体 存储 堆栈      更新时间:2023-10-16

我有一个结构体:

    struct Vehicle
{
    char ad; // Arrival departure char
    string license; // license value
    int arrival; // arrival in military time
};

我想将结构体中的所有值存储在堆栈中。

我可以在堆栈中存储一个值:

    stack<string> stack; // STL Stack object
    Vehicle v; //vehicle struct object
    stack.push(v.license);

如何将整个结构体存储在堆栈中,以便稍后访问char, int和string?

简单,只需将string替换为Vehicle,将string实例替换为Vehicle实例:

stack< Vehicle > stack; // STL Stack object
Vehicle v; //vehicle struct object
stack.push(v);

<>之间的类型是你的堆栈将保存的类型。第一个保存string s,你可以有一个保存Vehicles:

std::stack<Vehicle> stack;
Vehicle v;
stack.push(v);

当v超出作用域时会发生什么?我猜你最好在堆上创建对象,并在堆栈中存储指向它们的指针:

void Foo(Stack <Vehicle>& stack) {
  Vehicle* vPtr = new Vehicle();
  stack.push(vPtr);
}