2014-10-08 37 views
0

我有一個類型Block,它是一個4整數的向量。我有一個向量Block s。與自定義向量類型的堆棧

vector<Block> blockCollection 

現在,我們假設我想在某些任意函數中對這些塊進行排序/搜索。要做到這一點,我利用堆棧:

stack<Block> blockStack; 

blockStack每個Block是4個整數的向量。如何訪問或顯示blockStack中的每個元素?

+5

堆棧是後進先出結構。爲什麼你需要使用堆棧? – cdhowie 2014-10-08 20:16:33

+0

簡單使用blockStack [x] [y]怎麼樣? – 2014-10-08 20:17:26

+0

@arc_lupus'std :: stack'沒有'operator []'。 – cdhowie 2014-10-08 20:17:56

回答

2

堆棧是用於在應用中使用,你只添加值到容器的一側,訪問在容器的同一側頂層元素。看看the functions available to the stack應該給你一個好主意,爲什麼這是這種情況 - 關於插入和訪問操作,你是非常有限的。如果你的程序需要比這更多的功能,那麼棧可能不是一個好的數據結構選擇。我建議你改用std::vector。有兩種方法可以訪問std::vector的內容:下標運算符[]和成員函數at()(如果請求的索引超出範圍,後者將引發錯誤)。我們還有一個簡單的方法可以使用for循環遍歷std::vector

如果不使用C++ 11:

for(vector<vector<Block>>::iterator iter = myVector.begin(); iter != myVector.end(); ++iter) 
{ 
    //do stuff to iter 
} 

用C++ 11使語法簡單:

for(auto value : myVector) //read-only. to alter value, change to auto& 
{ 
    //do stuff to value 
} 
+0

通過'begin()'和'end()'加上'vector <> :: iterator' ... – Walter 2014-10-08 20:51:58

+0

好點 - 它們*正在討論訪問所有包含的值。不妨將它加上... – Conduit 2014-10-08 20:52:55