什么是std :: vector :: front()用于?

时间:2010-01-21 17:22:36

标签: c++ stl vector

很抱歉,如果之前有人询问,但我想知道std::vector::front()的用途是什么。

是否有理由使用例如myvector.front()而不是myvector[0]myvector.at(0)

3 个答案:

答案 0 :(得分:21)

一些也适用于列表的通用算法使用它。

这是一个一般原则的示例:如果您为所支持的所有语义提供访问器,而不仅仅是您支持的实现,则通常更容易编写因此更容易重用代码。

答案 1 :(得分:13)

如果myvector的类型更改为另一种不可索引的数据类型(例如列表),则不必更改访问容器前面的代码。

答案 2 :(得分:6)

这样做提供了一种叫做静态多态的东西。

假设我使用队列类编写了算法。它有一个front()函数来获取队列的下一个元素,以及一个enqueue()函数来添加到队列的末尾。现在让我说我发现这个队列类写得很差而且非常慢,而且我宁愿使用std :: vector,这要快得多(我知道有一个std :: queue,这只是一个例子)。如果获取std :: vector的第一个元素的唯一方法是使用v [0],我必须通过我的代码并用[0]替换所有对front()的调用。但是通过实现front(),std :: vector现在可以成为我的队列类的替代品。我必须更改的唯一代码是算法中容器的类型。