对不起,如果之前有人询问,但我想知道它的用途std::vector::front()是什么.
有没有理由使用例如myvector.front(),而不是myvector[0]或myvector.at(0)?
dmc*_*kee 21
一些也适用于列表的通用算法使用它.
这是一个通用原则的示例:如果为所支持的所有语义提供访问器,而不仅仅是您支持的实现,则更容易编写,因此更容易重用代码.
Ann*_*nne 13
如果myvector的类型更改为另一种不可索引的数据类型(例如列表),则不必更改访问容器前端的代码.
这样做提供了一种称为静态多态的东西.
假设我使用队列类编写了算法.它有一个front()函数来获取队列的下一个元素,以及一个enqueue()函数来添加到队列的末尾.现在让我说我发现这个队列类写得很差而且非常慢,而且我宁愿使用std :: vector,这要快得多(我知道有一个std :: queue,这只是一个例子).如果获取std :: vector的第一个元素的唯一方法是使用v [0],我必须通过我的代码并用[0]替换所有对front()的调用.但是通过实现front(),std :: vector现在可以成为我的队列类的替代品.我必须更改的唯一代码是算法中容器的类型.