我有一个Block
类型,它是一个4个整数的向量。
typedef vector<int> Block;
我有Block
s的向量。
vector<Block> blockCollection
现在,让我们说我想在某些任意函数中对这些块进行排序/搜索。为此,我利用了一个堆栈:
stack<Block> blockStack;
Block
中的每个blockStack
都是4个整数的向量。如何访问或显示blockStack
中的每个元素?
答案 0 :(得分: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
}