什么是容器/适配器?我有C++语言的基本知识,如(类/模板/STL)。
请问有人能用通俗易懂的语言解释并给出一个容器/适配器应用的实际示例吗?
什么是容器/适配器?我有C++语言的基本知识,如(类/模板/STL)。
请问有人能用通俗易懂的语言解释并给出一个容器/适配器应用的实际示例吗?
一个容器是一种特定的数据结构,通常包含大量数据。每种容器类型都有其访问、添加或删除数据的限制。
以下是使用STL类的几个容器示例。
这里是序列容器,意味着数据可靠地排序(即它们具有前面和后面。我不是指它们会自动排序!)。
这些是关联容器,意味着元素不再有序,而是具有彼此之间的关联,用于确定唯一性或映射:
另一方面,容器适配器是通过限制现有容器中的功能并提供不同集合的功能而创建的接口。当声明容器适配器时,您可以选择指定哪些序列容器形成底层容器。 这些是:
有关更多信息,请参见此参考页面,包括每个操作的时间复杂度以及每种容器类型的详细页面链接。
<joke>
C++ 很技术性,难以理解 :-D</joke>
容器是 STL 中可以包含数据的数据类型。
例如:vector
是动态数组
适配器是来自 STL 的数据类型,它们可以使容器提供特定的接口。
例如:在所选择的容器上提供堆栈接口的 stack
(旁注:实际上两者都是模板而不是数据类型,但这样定义看起来更好)
"容器"的技术定义来自The SGI STL documentation,非常好:
容器是存储其他对象(其元素)的对象,并具有访问其元素的方法。特别地,每个作为容器模型的类型都有一个关联的迭代器类型,可用于遍历容器的元素。
因此,容器是一种数据结构,它保存(“包含”)某种类型的对象集合。关键思想是有不同类型的容器,每个容器以不同的方式存储对象并提供不同的性能特征,但它们都有标准接口,使您可以轻松地将一个容器替换为另一个容器,而不必修改使用容器的大部分代码。容器的设计旨在尽可能地可互换。
容器适配器是提供容器子集功能的类,但可能提供附加功能,使得更容易将容器用于某些场景。例如,您可以轻松地使用std::vector
或std::deque
作为堆栈数据结构,并调用push_back
,back
和pop_back
作为堆栈接口;std::stack
提供了一个接口,可以使用std::vector
或std::deque
或其他序列容器,但提供更标准的push
,top
和pop
成员函数来访问成员。