C+中的双链表、链表和动态数组+; 我对C++很陌生,可能这些问题很简单,很基础。这里我有两个基本问题: 我理解C++中的向量是动态数组。它们可以通过将前/后元素推入来更改大小
我的问题是:向量是动态分配的,还是仅仅因为不断变化的大小功能而调用“动态数组”名称? 动态分配数组和动态数组使我完全 糊涂了C+中的双链表、链表和动态数组+; 我对C++很陌生,可能这些问题很简单,很基础。这里我有两个基本问题: 我理解C++中的向量是动态数组。它们可以通过将前/后元素推入来更改大小,c++,list,vector,stl,C++,List,Vector,Stl,我的问题是:向量是动态分配的,还是仅仅因为不断变化的大小功能而调用“动态数组”名称? 动态分配数组和动态数组使我完全 糊涂了 STL列表是C++中的链表(如我所理解的)。这些是双链表还是单链表 谢谢,向量是动态分配的,正如您在前面提到的示例中所看到的。您可以在push_back功能中更好地看到这一点: 如果新的size()大于capacity(),则所有迭代器和引用(包括结束迭代器的过去部分)都将无效。否则,只有结束迭代器的过去部分无效 此外,请记住这一点,因为它的复杂性是摊销常数(例如,您可
谢谢,向量是动态分配的,正如您在前面提到的示例中所看到的。您可以在
push_back
功能中更好地看到这一点:
如果新的size()大于capacity(),则所有迭代器和引用(包括结束迭代器的过去部分)都将无效。否则,只有结束迭代器的过去部分无效
此外,请记住这一点,因为它的复杂性是摊销常数(例如,您可以看到)
有关更多信息(在评论中提到),您可以在转发列表中找到真正的列表
:
它是作为一个单链表实现的,与它在C中的实现相比基本上没有任何开销。与std::list相比,当不需要双向迭代时,这个容器提供了更节省空间的存储
此外,如中所述,列表被实现为双链接列表
列表容器实现为双链接列表;双链接列表可以将它们包含的每个元素存储在不同的、不相关的存储位置。在内部,顺序是通过与每个元素的关联来保持的,这些元素是指向它前面的元素的链接和指向它后面的元素的链接
两者都有<代码>列表是双链接的,
slist
是单链接的。将单链表引入标准库时,使用名称std::forward_list
代替了slist
(与STL版本略有不同)。这是一个很好的参考,可能很有用。1。通常,向量
是静态分配的,但包含动态分配的数组。vector
的方法管理此动态数组,以便您根据需要调整动态数组的大小并释放它。您可以动态地分配向量
,但这不符合这一点;现在,您必须手动管理为您管理内存而设计的数据结构的内存。2.列表
可能被分配为双链接列表,但这不是必需的。如果需要单链接列表,您可能需要提到它的存在。