非常抱歉如果之前已经有人问过这个问题,但是我想知道std::vector::front()
的用途。
使用myvector.front()
相比于使用myvector[0]
或者myvector.at(0)
是否有什么原因?
有些通用算法也可以在列表上使用。
这是一个通用原则的例子:如果您为支持的所有语义提供访问器,而不仅仅是支持的实现,那么编写通用代码就更容易,因此重用代码也更容易。
at(0)
会抛出异常。 - luizfls这样做提供了一种称为静态多态性的东西。
假设我使用队列类编写了一个算法。它有一个front()函数来获取队列的下一个元素,以及一个enqueue()函数来添加到队列的末尾。现在假设我发现这个队列类编写得很差,并且非常慢,我更想使用std::vector,因为它更快(我知道有一个std::queue,这只是一个例子)。如果要使用v[0]才能获得std::vector的第一个元素,那么我必须查找我的代码并将所有front()调用替换为[0]。但通过实现front(),std::vector现在可以成为我的队列类的即插即用替代品。我唯一需要改变的代码是算法中容器的类型。
std::queue
е’Њstd::stack
е…·жњ‰front()
дЅ†жІЎжњ‰begin()
гЂ‚ - Steve Jessopback()
保持一致,myvector[myvector.size() - 1]
并不是那么简单明了的。 - dalle