我有一個類型Block
,它是一個4整數的向量。我有一個向量Block
s。與自定義向量類型的堆棧
vector<Block> blockCollection
現在,我們假設我想在某些任意函數中對這些塊進行排序/搜索。要做到這一點,我利用堆棧:
stack<Block> blockStack;
凡blockStack
每個Block
是4個整數的向量。如何訪問或顯示blockStack
中的每個元素?
我有一個類型Block
,它是一個4整數的向量。我有一個向量Block
s。與自定義向量類型的堆棧
vector<Block> blockCollection
現在,我們假設我想在某些任意函數中對這些塊進行排序/搜索。要做到這一點,我利用堆棧:
stack<Block> blockStack;
凡blockStack
每個Block
是4個整數的向量。如何訪問或顯示blockStack
中的每個元素?
堆棧是用於在應用中使用,你只添加值到容器的一側,只訪問在容器的同一側頂層元素。看看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
}
堆棧是後進先出結構。爲什麼你需要使用堆棧? – cdhowie 2014-10-08 20:16:33
簡單使用blockStack [x] [y]怎麼樣? – 2014-10-08 20:17:26
@arc_lupus'std :: stack'沒有'operator []'。 – cdhowie 2014-10-08 20:17:56