首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

C++】手搓 list 容器

1 前言 ListC++标准模板库(STL)中的一个成员,其本质为带头双向循环链表。...不同于连续的、紧密排列的数组容器Vector,List容器的内部是由双向链表构成的,使得它在插入和删除操作上,就如同行云流水一般顺畅,不需移动其它元素。...这种结构赋予了List灵动的特性:它能够轻松地在任意位置增加或移除元素,而这种操作几乎是与容器大小无关的,体现了时间复杂度上的优势。...因为List的顺序访问性能相比之下会显得有些力不从心。 所以如果需要频繁随机的访问数据,那么选择vector容器 如果需要频繁插入删除数据,那么选择list容器 排序不要选择list !!!...多种构造:类都应该包含多种构造函数 支持迭代器:迭代器是C++重要的特性,我们写的list 也一定要支持迭代器。

4910

C++ list容器的splice方法

list容器底层实现是一个带头结点的双向链表,由于链表的每个节点是单独开辟的,所以链表在移动数据,或者两个链表之间移动数据的时候,直接把节点摘下来,接入到新的位置就可以了,效率比较高。...last ); 功能:将 list x 中的从迭代器 first 到迭代器 last 这一段元素移动到position处 注意:position位置的指定只能是调用者容器中的位置,要剪切的元素是list...() { list list1; list list2; list list3; for(int i = 0; i < 10; ++i) { list1.push_back...); cout<< endl << endl; //将 list1中的首元素移到 list1的最后 list1.splice ( list1.end(), list1, list1.begin(...(list2.begin(), list1, list1.begin(), list1.end()); cout << "list2.splice(list2.begin(), list1, list1

75730

list容器

双向循环链表list list是双向循环链表,每个元素都知道前面一个元素和后面一个元素。...list和vector的差别: 在list中,因为其内存分配是非连续的,因此不能像vector那样用[]操作符取值。而仅仅能用迭代器来訪问list中的元素。...list申请新的节点单元,插入到list链表中,数据存放结构例如以下图所看到的: list每次添加一个元素,不存在又一次申请内存的情况,它的成本是恒定的。...插入一个元素到list中 max_size() 返回list能容纳的最大元素数量 merge() 合并两个list pop_back() 删除最后一个元素 pop_front(...() 把list的元素倒转 size() 返回list中的元素个数 sort() 给list排序 splice() 合并两个list swap() 交换两个list unique

46700

C++ STL之list容器的基本操作

由于list和vector同属于序列式容器,有很多相同的地方,而上一篇中已经写了vector,所以这一篇着重写list和vector的不同之处和特有之处。...特别注意的地方: (1)STL中迭代器容器中都要注意的地方(vector中已经提到): 1)任何时候同时使用两个迭代器产生的将会是一个前闭后开的区间(具体见插入和删除的例子) 2)begin()指向的是...,有本质区别而导致下面区别 1)list不支持随机访问(2)中已经说明,vector可以像数组那样使用平[]访问元素,而list是不可以的 2) list的插入和删除效率很高,所以list有push_front...,但是运行会出错 114 /*int c1[3]={1,4,4}; 115 int c2[3]={6,3,5}; 116 listlc1(&c1[0],&c1[2]+1...); 117 listlc2(&c2[0],&c2[2]+1); 118 cout<<"原来的数据:"<<endl; 119 cout<<"lc1:"<<endl; 120

81070

C++初阶:容器(Containers)list常用接口详解

介绍完了vector类的相关内容后,接下来进入新的篇章,容器list介绍: 1.list的初步介绍 list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。...list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单高效。...与其他的序列式容器相比(array,vector,deque),list通常在任意位置进行插入、移除元素的执行效率更好。...与其他序列式容器相比,list和forward_list最大的缺陷是不支持任意位置的随机访问,比如:要访问list的第6个元素,必须从已知的位置(比如头部或者尾部)迭代到该位置,在这段位置上迭代需要线性的时间开销...list() 构造一个空列表。 list(const list& x) 拷贝构造函数。构造一个包含 x 中每个元素副本的列表。

12110

C++STL 2——序列容器 array、vector 、deque、 list 和 forward_list

C++STL 2——序列容器 一、概述 序列容器以线性序列的方式存储元素。它没有对元素进行排序,元素的顺序和存储它们的顺序相同。...访问容器中任意元素的速度要比前三种容器慢,这是因为 list 必须从第一个元素或最后一个元素开始访问,需要沿着链表移动,直到到达想要的元素。...forward list (正向链表容器) :是一个长度可变的、由 T 类型对象组成的序列,它以单链表的形式组织元素,是一类比链表容器快、更节省内存的容器,但是它内部的元素只能从第一个元素开始访问...在深入了解到容器是如何组织元素以后,你会本能地知道哪个容器的哪些成员函数能使用。 2. list 和 forward_list 的函数成员。...详情参考C语言中文网

57220

C++(STL):14--- forward_listlist更高效的容器

forward_listC++ 11 新添加的一类容器,其底层实现和 list 容器一样,采用的也是链表结构,只不过 forward_list 使用的是单链表,而 list 使用的是双向链表(如图...那么,既然 forward_list 容器具有和 list 容器相同的特性,list 容器还可以提供更多的功能函数,forward_list 容器有什么存在的必要呢?...效率高是选用 forward_list 而弃用 list 容器最主要的原因,换句话说,只要是 list 容器和 forward_list 容器都能实现的操作,应优先选择 forward_list 容器。...4) 在已有 forward_list 容器的情况下,通过拷贝该容器可以创建新的 forward_list 容器。...除此之外,C++ 11 标准库还新增加了 begin() 和 end() 这 2 个函数,和 forward_list 容器包含的 begin() 和 end() 成员函数不同,标准库提供的这 2 个函数的操作对象

1K30

C++】STL 容器 - list 双向链表容器 ① ( 容器特点 | 容器操作时间复杂度 | 构造函数 )

文章目录 一、 list 双向链表容器简介 1、容器特点 2、容器操作时间复杂度 3、遍历访问 5、头文件 二、 list 双向链表容器 构造函数 1、默认无参构造函数 2、创建包含 n 个相同元素的...list 双向链表 3、使用初始化列表构造 list 双向链表 4、使用另外一个 list 容器 构造 list 双向链表容器 一、 list 双向链表容器简介 1、容器特点 list 双向链表容器 可以在...at() 函数 和 [] 操作符访问容器中的元素 ; 5、头文件 使用 list 双向链表容器 , 需要导入 头文件 ; #include 二、 list 双向链表容器 构造函数...双向链表容器 使用另外一个 list 容器 构造 list 双向链表容器 , 有 3 种方式 : 参数为另一个 list 容器引用 : 构造函数会创建一个新的列表 , 它是另一个列表 other 的副本...容器内容 : 1 2 3 4 5 list 容器内容 : 1 2 3 4 5 list 容器内容 : 2 3 4 5 请按任意键继续. . .

12410

C语言】va_list(可变参数处理)

C 语言中的 va_list 类型允许函数接受可变数量的参数,这在编写需要处理不定数量参数的函数时非常有用。...va_list 类型是在 stdarg.h 头文件中定义的,它允许函数处理可变数量的参数。下面我们将详细介绍 va_list 的用法以及实际应用示例。...一、va_list的用法 va_list 是一个指向参数列表的指针,它允许函数处理不定数量的参数。...va_list 类型定义如下:  typedef char* va_list;  va_list 类型通常与 va_start、va_arg 和 va_end 一起使用。...三、结语         va_list 类型是 C 语言中处理可变参数的重要工具,它允许函数处理不定数量的参数。通过 va_list,我们可以编写更加灵活和通用的函数,处理不同数量的参数。

9710

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券