2011-11-14 89 views
5

存储结构我有一个结构:C++:在堆栈

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); 

我怎么能存储整个结构在堆栈中,所以我可以在以后进入焦炭,int和,串?

回答

10

简单,只需更换stringVehicle并为Vehicle实例的的string实例:

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

哈哈,我简直不敢相信它那么简单。谢谢! – Nick

6

<>之间的类型,你的筹码会持什么样的。举行string S中的第一个,你可以有一个持有Vehicles

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

会发生什么,当V超出范围?我想你最好在堆上创建对象并在其中存储指向它们的指针:

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

我可以做stack.push({new Vehicle()})吗? –

+0

我喜欢你的语法,因为它指定你不打算使用显式指针指向新创建的对象。 – Vlad

0

我该如何在堆栈中推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); 
}