iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++中vector和list区别是什么
  • 780
分享到

C++中vector和list区别是什么

2023-06-26 03:06:07 780人浏览 八月长安
摘要

这篇文章主要讲解了“c++中vector和list区别是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++中vector和list区别是什么”吧!一张表格让你理解vector和list

这篇文章主要讲解了“c++中vector和list区别是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++中vector和list区别是什么”吧!

一张表格让你理解vector和list区别

区别vectorlist
数据结构顺序表(动态数组环形双向链表
物理空间:连续的非连续的
内存消耗:
大小可变:可变-动态数组可变-通过指针
随机存储:支持(vector 重载了[])不支持(因为非连续)
优势:支持随机存储任意节点高效的插入、删除等操作
劣势:插入和删除进行内存拷贝工作不支持随机存取

数据结构对比图:

C++中vector和list区别是什么

那我们怎样选择使用vector和list呢?

在选择该用哪种数据结构的时候,应该遵循这样的原则:

如果只关心随机存取,不在乎插入和删除 ,那么就要考虑vector

如果只关心插入删除,不在意随机存取, 那么就要考虑list

例子

处理大量数据时,数据相对固定,不关心排序和中间值插入和删除,只是进行查询和筛选时,选vector。

处理顺序发生改变的数据时,数据变化,比如排行榜需要进行换位,插入删除等操作,此时选择list。

由于list和vector上面的这些区别,因此list::iterator与vector::iterator也有一些不同。请看下面的例子:

        #include <iOStream>        #include <vector>        #include <list>        using namespace std;                int main( void )        {                vector<int> v;                 list<int> l;                                for (int i=0; i<8; i++)     //往v和l中分别添加元素                {                        v.push_back(i);                        l.push_back(i);                }                                cout << "v[2] = " << v[2] << endl;                //cout << "l[2] = " << l[2] << endl;       //编译错误,list没有重载[]                cout << (v.begin() < v.end()) << endl;                //cout << (l.begin() < l.end()) << endl;   //编译错误,list::iterator没有重载<或>                cout << *(v.begin() + 1) << endl;                                vector<int>::iterator itv = v.begin();                list<int>::iterator itl = l.begin();                itv = itv + 2;                //itl = itl + 2;                  //编译错误,list::iterator没有重载+                itl++;itl++;                    //list::iterator中重载了++,只能使用++进行迭代访问。                cout << *itv << endl;                cout << *itl << endl;                        return 0;        }

由于vector拥有一段连续的内存空间,能非常好的支持随机存取,因此vector<int>::iterator支持“+”、“+=”、“<”等操作符。

而list的内存空间可以是不连续,它不支持随机访问,因此list<int>::iterator则不支持“+”、“+=”、“<”等操作符运算,因此代码20、26行会有编译错误。只能使用“++”进行迭代,例如代码27行,使用两次itl++来移动itl。还有list也不支持[]运算符,因此代码18行出现编译错误。

总之,如果需要高效的随即存取,而不在乎插入和删除的效率,使用vector;如果需要大量的插入和删除,而不关心随即存取,则应使用list。

答案:

vector拥有一段连续的内存空间,因此支持随机存取,如果需要高效的随即存取,而不在乎插入和删除的效率,使用vector。

list拥有一段不连续的内存空间,因此支持随机存取,如果需要大量的插入和删除,而不关心随即存取,则应使用list。

感谢各位的阅读,以上就是“C++中vector和list区别是什么”的内容了,经过本文的学习后,相信大家对C++中vector和list区别是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: C++中vector和list区别是什么

本文链接: https://www.lsjlt.com/news/306601.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++中vector和list区别是什么
    这篇文章主要讲解了“C++中vector和list区别是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++中vector和list区别是什么”吧!一张表格让你理解vector和list...
    99+
    2023-06-26
  • 在Java中ArrayList 和Vector的区别是什么
    Java中ArrayList和Vector的区别:ArrayList在性能方面要优于Vector。Vector使用了Synchronized来实现线程同步,是线程安全的,而ArrayList是非线程安全的。ArrayList通用性强,可以使...
    99+
    2024-04-02
  • 一篇文章让你轻松理解C++中vector和list区别
    目录一张表格让你理解vector和list区别例子总结一张表格让你理解vector和list区别 区别vectorlist数据结构:顺序表(动态数组)环形双向链表物理空间:连续的非连...
    99+
    2024-04-02
  • Java 中的vector和list的区别和使用实例详解
    要了解vector,list,deque。我们先来了解一下STL。 STL是Standard Template Library的简称,中文名是标准模板库。从根本上说,STL是一些容器和算法的集合。STL可分为容器(containers)、迭...
    99+
    2023-05-31
    vector list 区别
  • C++和C中const的区别是什么
    本篇内容介绍了“C++和C中const的区别是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!const,这个词字面意思为:常数。这就表示...
    99+
    2023-06-21
  • Java中List与ArrayList的区别是什么
    Java中List和ArrayList都是集合类的接口,但是它们之间存在一些区别。1. 继承关系:List是一个接口,而ArrayL...
    99+
    2023-08-15
    Java List ArrayList
  • C#中 new和override的区别是什么
    本篇文章为大家展示了C#中 new和override的区别是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。override是指“覆盖”,是指子类覆盖了父类的方法。子类的对象无法再访问父类中的该方...
    99+
    2023-06-17
  • c++中ReleaseDC和DeleteDC的区别是什么
    在C++中,ReleaseDC和DeleteDC是两个函数,它们的区别如下:1. ReleaseDC函数:这个函数用于释放设备上下文...
    99+
    2023-09-27
    c++
  • C# 中override和overload的区别是什么
    今天就跟大家聊聊有关C# 中override和overload的区别是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。C# override和overload特点重载(Overlo...
    99+
    2023-06-17
  • c#中EnableViewState和ViewStateMode的区别是什么
    在C#中,EnableViewState和ViewStateMode都是用于控制ViewState的属性。它们的区别如下: En...
    99+
    2023-10-23
    c#
  • c++中class和struct的区别是什么
    在C++中,class和struct都用于定义自定义的数据类型,但它们之间有几个区别。1. 默认的访问修饰符:在class中,默认的...
    99+
    2023-09-15
    c++
  • c++中break和continue的区别是什么
    在C++中,break和continue是两个控制流语句,用于在循环中控制程序的执行流程。 break语句用于终止当前循环(for...
    99+
    2024-03-01
    c++
  • C#中Write()和WriteLine()的区别是什么
    Write()和WriteLine()都是用于输出文本到控制台的方法,它们的区别在于: Write()方法在输出文本后不会自动换行...
    99+
    2024-03-01
    C#
  • C#中Task.Delay()和Thread.Sleep()的区别是什么
    这篇文章将为大家详细讲解有关C#中Task.Delay()和Thread.Sleep()的区别是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、简介Thread.Sleep()是同步延...
    99+
    2023-06-15
  • C# 中StringBuilder和String的区别是什么
    今天就跟大家聊聊有关C# 中StringBuilder和String的区别是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。C# StringBuilder和String区别Str...
    99+
    2023-06-17
  • c语言中s和c的区别是什么
    c语言中s和c的区别在于输出数据类型:s用于输出字符串,而c用于输出单个字符。此外,s支持宽度指定和精度指定,而c不支持;s支持空格填充,而c不支持。 C语言中s和c的区别 s和c是C...
    99+
    2024-05-12
    c语言
  • java和c++的区别是什么
    Java和C++是两种常见的编程语言,在以下几个方面有所不同:1. 语法结构:Java是一种面向对象的编程语言,其语法结构较为简洁和...
    99+
    2023-08-30
    java
  • Linux C中sockaddr和sockaddr_in的区别是什么
    这篇文章给大家分享的是有关Linux C中sockaddr和sockaddr_in的区别是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Linux C中sockaddr和sockaddr_in的区别struc...
    99+
    2023-06-09
  • c#中运算符?和??的区别是什么
    和 运算符都是条件运算符,用于选择值。 运算符如果任一操作数为 null 则引发异常, 运算符用于安全处理空值,如果左操作数为 null,则返回右操作数。 C# 中运算符 和 ...
    99+
    2024-05-10
    c#
  • Redis中的Set类型和List有什么区别
    数据结构: Set类型是无序且不重复的数据集合,类似于集合。 List类型是有序且可重复的数据集合,类似于数组。 元素的唯...
    99+
    2024-04-09
    Redis
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作