2011-11-14 45 views
5

Tôi có một struct:C++: Lưu cấu trúc trong một đống

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

Tôi muốn lưu trữ tất cả các giá trị trong struct trong một ngăn xếp.

Tôi có thể lưu trữ một giá trị trong ngăn xếp bằng cách thực hiện:

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

Làm thế nào tôi có thể lưu trữ một toàn bộ cấu trúc trong ngăn xếp vì vậy tôi sau này có thể truy cập vào char, int, và, chuỗi?

Trả lời

10

đơn giản, chỉ cần thay thế string cho Vehicle và một thể hiện của string cho một thể hiện của Vehicle:

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

Haha, tôi không thể tin điều đó thật đơn giản. Cảm ơn! – Nick

6

Kiểu giữa <> là những gì chồng bạn sẽ tổ chức. Người đầu tiên được tổ chức string s, bạn có thể có một chứa Vehicles:

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

Điều gì sẽ xảy ra khi v đi ra khỏi phạm vi? Tôi đoán bạn nên tạo đối tượng tốt hơn trên heap và lưu trữ con trỏ cho chúng trong ngăn xếp của bạn:

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

Tôi có thể làm stack.push ({new Vehicle()}) không? –

+0

Tôi thích cú pháp của bạn vì nó chỉ định rằng bạn không định sử dụng các con trỏ rõ ràng cho một đối tượng mới được tạo ra. – Vlad

0

Làm cách nào để đẩy g vào ngăn xếp?

#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); 
} 
Các vấn đề liên quan