堆栈与自定义矢量类型

时间:2014-10-08 20:15:12

标签: c++ vector stack

我有一个Block类型,它是一个4个整数的向量。

typedef vector<int> Block;

我有Block s的向量。

vector<Block> blockCollection

现在,让我们说我想在某些任意函数中对这些块进行排序/搜索。为此,我利用了一个堆栈:

stack<Block> blockStack;

Block中的每个blockStack都是4个整数的向量。如何访问或显示blockStack中的每个元素?

1 个答案:

答案 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
}