Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C+中的双链表、链表和动态数组+; 我对C++很陌生,可能这些问题很简单,很基础。这里我有两个基本问题: 我理解C++中的向量是动态数组。它们可以通过将前/后元素推入来更改大小_C++_List_Vector_Stl - Fatal编程技术网

C+中的双链表、链表和动态数组+; 我对C++很陌生,可能这些问题很简单,很基础。这里我有两个基本问题: 我理解C++中的向量是动态数组。它们可以通过将前/后元素推入来更改大小

C+中的双链表、链表和动态数组+; 我对C++很陌生,可能这些问题很简单,很基础。这里我有两个基本问题: 我理解C++中的向量是动态数组。它们可以通过将前/后元素推入来更改大小,c++,list,vector,stl,C++,List,Vector,Stl,我的问题是:向量是动态分配的,还是仅仅因为不断变化的大小功能而调用“动态数组”名称? 动态分配数组和动态数组使我完全 糊涂了 STL列表是C++中的链表(如我所理解的)。这些是双链表还是单链表 谢谢,向量是动态分配的,正如您在前面提到的示例中所看到的。您可以在push_back功能中更好地看到这一点: 如果新的size()大于capacity(),则所有迭代器和引用(包括结束迭代器的过去部分)都将无效。否则,只有结束迭代器的过去部分无效 此外,请记住这一点,因为它的复杂性是摊销常数(例如,您可

我的问题是:向量是动态分配的,还是仅仅因为不断变化的大小功能而调用“动态数组”名称? 动态分配数组和动态数组使我完全 糊涂了

STL列表是C++中的链表(如我所理解的)。这些是双链表还是单链表
谢谢,

向量是动态分配的,正如您在前面提到的示例中所看到的。您可以在
push_back
功能中更好地看到这一点:

如果新的size()大于capacity(),则所有迭代器和引用(包括结束迭代器的过去部分)都将无效。否则,只有结束迭代器的过去部分无效

此外,请记住这一点,因为它的复杂性是摊销常数(例如,您可以看到)

有关更多信息(在评论中提到),您可以在
转发列表中找到真正的列表

它是作为一个单链表实现的,与它在C中的实现相比基本上没有任何开销。与std::list相比,当不需要双向迭代时,这个容器提供了更节省空间的存储

此外,如中所述,列表被实现为双链接列表

列表容器实现为双链接列表;双链接列表可以将它们包含的每个元素存储在不同的、不相关的存储位置。在内部,顺序是通过与每个元素的关联来保持的,这些元素是指向它前面的元素的链接和指向它后面的元素的链接

  • 向量是动态分配的,还是仅仅因为改变大小功能而调用“动态数组”名称
  • 据我所知,向量被称为动态数组,因为它们的大小可以在运行时改变。但实际上,它们是动态分配阵列的

    STL列表是C++中的链表(如我所理解的)。这些是双链表还是单链表
    两者都有<代码>列表是双链接的,
    slist
    是单链接的。将单链表引入标准库时,使用名称
    std::forward_list
    代替了
    slist
    (与STL版本略有不同)。

    这是一个很好的参考,可能很有用。1。通常,
    向量
    是静态分配的,但包含动态分配的数组。
    vector
    的方法管理此动态数组,以便您根据需要调整动态数组的大小并释放它。您可以动态地分配
    向量
    ,但这不符合这一点;现在,您必须手动管理为您管理内存而设计的数据结构的内存。2.
    列表
    可能被分配为双链接列表,但这不是必需的。如果需要单链接列表,您可能需要提到它的存在。