C ++: хранение структур в стеке - PullRequest
6 голосов
/ 14 ноября 2011

У меня есть структура:

    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?

Ответы [ 4 ]

11 голосов
/ 14 ноября 2011

Простой, просто замените string на Vehicle и экземпляр string для экземпляра Vehicle:

stack< Vehicle > stack; // STL Stack object
Vehicle v; //vehicle struct object
stack.push(v);
6 голосов
/ 14 ноября 2011

Тип между < и > - это то, что будет удерживать ваш стек. Первый из них содержит string с, у вас может быть тот, который содержит Vehicles:

std::stack<Vehicle> stack;
Vehicle v;
stack.push(v);
1 голос
/ 05 ноября 2013

Что произойдет, если v выйдет за рамки?Полагаю, вам лучше создать объект в куче и сохранить указатели на них в стеке:

void Foo(Stack <Vehicle>& stack) {
  Vehicle* vPtr = new Vehicle();
  stack.push(vPtr);
}
0 голосов
/ 09 декабря 2017

Как я могу вставить g в стек?

#include<iostream>
#include<stack>
using namespace std;
struct node{
    int data;
    struct node *link;
};

main(){
    stack<node> s;
    struct node *g;
    g = new node;
    s.push(g); 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...