2011-11-14 21 views
5

Bir yapmam var:C++: Yapıları bir yığında depolamak

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

Yapıdaki tüm değerleri bir yığında saklamak istiyorum.

Yaparak yığını içinde bir değer depolayabilirim:

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

Tüm yapıyı yığında nasıl saklayabilirim, böylece daha sonra char, int ve string'e erişebilirim?

cevap

10

Basit, sadece Vehicle için string değiştirip Vehicle bir örneği için string örneğidir:

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

Haha, Bu kadar basit olduğuna inanamıyorum. Teşekkürler! – Nick

6

< ve > arasındaki türü yığını neler içerebileceği edilir. v kapsam dışına çıktığında

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

ne olurdu: string ler düzenlenen İlki, sen Vehicles tutan birine sahip olabilir? Yığında nesnenin daha iyi oluşturulacağını ve yığınınızdaki işaretleyicileri depolayacağınızı tahmin edersiniz:

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

sadece stack.push ({new Vehicle()}) yapabilir miyim? –

+0

Yeni oluşturulmuş bir nesneye açık işaretçiler kullanmayacağınızı belirttiğinden, sözdizimini beğendim. – Vlad

0

Yığına nasıl g itebilirim?

#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); 
} 
İlgili konular