先强调一下,这里的泛型算法实际不光光是对vector的操作,对于“顺序容器”均可以。
但是什么是顺序容器:
我们都知道,容器就是一些特定类型对象的集合。而顺序容器为程序员提供了控制元素存储和访问的能力。这种容器的一个显著的特征,就是容器中元素的顺序不依赖于元素的值,而是与加入容器时的位置有关。常见的顺序容器有vector、deque(双端队列)、list(双向链表)、forward_list(单向链表)、array(固定大小数组)、string。
了解了顺序容器,现在以vector为例,做下文的说明。
顺序容器本身只定义了很少的操作,这些操作我在前面的博客(点这里)也有写过。比如添加、删除元素,访问元素、获得迭代器等。但是现实中,我们用户肯定希望有更多的操作供自己使用,比如查找、替换、删除特定元素,重新排列元素等。为了实现上面的功能,程序员可能需要写一大段代码来将其实现。
为了解决这个问题,增加对于vector的操作种类,标准库给出了一组“泛型算法(generic algorithm)”。称其“算法”,是因为他们实现了一些经典算法的公共接口,比如排序、搜索。称其为“泛型”,是因为他们可以用于不同类型的元素和多种容器类型。
下面讲一下具体有哪些泛型算法。
大多数的算法都定义在头文