介绍C++中的顺序容器以及优缺点

顺序容器的类型:

介绍C++中的顺序容器以及优缺点


使用string和vector优点:由于其元素是连续存储的,所以可用通过元素的下标快速访问其元素。

缺点:在这两种容器的中间插入和删除元素很费时,原因是在一次插入或删除操作时,需要移动插入/删除位置之后的所有元素。

string和vector仅支持在容器尾部(支持push_back()、emplace_back()和pop_back()操作)或中间插入和删除元素(支持insert()、emplace()和erase()、clear()),不支持尾容器头部插入和删除元素(不支持push_front()、emplace_front()和pop_front())


使用list和forward_lish优点:在容器的任何位置插入和删除元素很快。

缺点:不支持元素的随机访问,如需访问一个元素则要遍历整个遍历整个容器,很耗时。forward_list没有size操作(因为forward_list保存或计算其长度会比手写链表多出额外的开销)

forward_list不支持push_back()和emplace_back(),支持push_front()和emplace_front(),且有自己专属的insert和emplace。


使用deque优点:支持元素的随机访问,在头尾位置插入和删除元素很快(与list或forward_list添加删除元素的速度相当)。

缺点:在中间插入和删除元素费时。


使用array:因为array对象的大小已经固定,所以不支持添加和删除元素以及改变容器array大小的操作


顺序容器的选择:

介绍C++中的顺序容器以及优缺点