首页 > 编程语言 >【c++】容器

【c++】容器

时间:2023-04-22 12:22:40浏览次数:43  
标签:容器 存储 对象 list c++ vector

c++中容器的定义如下:数据存储上,有一种对象类型,它可以持有其他对象或指向其他对象的指针,这种对象类型叫容器。
通俗的说容器就是保存其他对象的对象,这种“对象”还包含了一些列处理其他对象的方法,这也体现了容器类的一个好处,“容器类对特定代码重用问题的良好的解决方案”。

容器另一个好处就是可以自行扩展,解决问题是不知道需要存储多少个对象,数组在这方面是个欠缺。容器可以为申请内存、释放内存,并且使用最优的算法来执行的命令。

容器用来存储数据的,数据可以是用户自定义类型(对象),也可以是预定义类型。

c++中的容器主要使用如vector(可变数组的顺序容器),list (顺序容器) 这些都是已经封装好了的,包含头文件"vector","list"。
他们可以通过迭代器iterator访问容器中的数据,map,set(关联容器),关联容器map键值对形式出现key-value,key唯一,mutimap多映射可以不唯一;set是一个单一值的集合,如1,2,3,4。

vector容器的特点:在内存中是一片连续的存储区域,但容量可以 以原有的2倍扩展。
初始化的时候,可以指定容量,比如如果定义容量50 的容器存储 60个string对象,由于初始容量不足60,容器将会重新定义一个容量是原来的2倍新容器,然后拷贝原容器的对象到新容器. 读取速度快,插入删除效率低.如果仅仅在容器头或尾部 进行增删改,推荐使用deque,专门提供了对首尾的操作.

list容器特点:相当数据结构的链表,不是一个连续的存储区域,插入,删除很方便,但是查询速度慢。

vector vec 就是定义了一个vector容器,可以通过

vec.push_back(), push_font(),insert(position,value) 想vector中添加一个指定值

list ilist<初始大小,默认赋值> list ilist(20 -1) 初始20个值为-1的list

标签:容器,存储,对象,list,c++,vector
From: https://www.cnblogs.com/Amor-ztt/p/17342747.html

相关文章

  • c++ CRTP 中判断 Derived 中有没有某个成员函数
    //省略HasMembertemplate<Dervied>classB{static_assert(HasMember<Derived>());}classA:publicB<A>{public:voidMember();}这样的代码是编译不过的,因为A还没有完全定义时,static_assert就会fail,但是将static_assert放到某个函数里是可以编译过的。......
  • c++在嵌入类中定义上层类的实例
    问题是这样的,嵌入类挺好的,可以有效表明类之间的从属关系,我们常常这样classA{public:classAttr{private:A&mA;};};这样是没有问题的,因为A此时还没有完全定义,使用引用或指针都是可以的。但是有些时候,如果A对象是一个临时对象,但我们想让Attr对象可以独......
  • c/c++零基础坐牢第六天
    c/c++从入门到入土(6)开始时间2023-04-20 19:23:57结束时间2023-04-22 11:06:28 前言:在解决实际问题中,我们会需要重复执行一些已知的操作,如级数求和、穷举或迭代求和。无论次数已知或未知,这都是选择结构和顺序结构难以解决的,这时,我们便引入循环控制结构,其中包括次数已知的计数......
  • 01-目录---C/C++
    第01章:数据类型typedef与typeid.name():链接数据类型:链接类型转换:链接X:链接X:链接X:链接X:链接X,链接x:链接X:链接第02章:常量与变量常量:链接变量:链接变量跨文件使用,链接有关变量声明的关键字:链接X:链接X:链接X:链接X:链接X:链接X:链接X:链接X:链接X:链接X:链接X:链接第03......
  • C++实现职工管理系统
    1、管理系统需求1.1考察知识点:C++的面向对象性,文件的读写操作1.2需求分析职工管理系统可以用来管理公司内所有员工的信息利用C++来实现一个基于多态的职工管理系统公司中职工分为三类:普通员工、经理、老板,显示信息时,需要显示职工编号、职工姓名、职工岗位、以及职责普通......
  • c++打卡第十一天
    一、问题描述牛顿迭代法求方程根。编写一个函数用来实现牛顿迭代法求方程根。方程为为ax^4+bx*3+cx^2+dx+e=0,系数由系统输入,求x在1附近的一个实根,由主函数输出。x=x0-f(x0)/fd(x0),当x减去x0的绝对值小于等于1e-5即十的负五次方时,程序结束。二、设计思路。①一个简单的函数,......
  • 快速部署Kubernetes 1.17:使用kubeadm轻松构建强大的容器编排平台
    在上一篇我们已经初步认识了Kubernetes,在本篇我们就开始着手搭建kubernetes,具体操作如下:1.环境准备(1).环境说明节点名称机器IP系统master10.2.3.191CentOS7.7node110.2.3.192CentOS7.7node210.2.3.190CentOS7.7(2).禁止swap(三台机器上都操作)swapoff-a#临时改配置文件/etc/f......
  • C++实现通讯录管理系统
    C++实现简单的通讯录管理系统1.功能设计通讯录是一个可以记录亲人、好友信息的工具。本代码主要利用C++来实现一个通讯录管理系统系统中需要实现的功能如下:●添加联系人:向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记录1000人●显示联系人:显......
  • c++万能头文件
    #include<bits/stdc++.h>//C++includesusedforprecompiling-*-C++-*-//Copyright(C)2003-2014FreeSoftwareFoundation,Inc.////ThisfileispartoftheGNUISOC++Library.Thislibraryisfree//software;youcanredistributeitand/......
  • C/C++课程信息管理系统[2023-04-21]
    C/C++课程信息管理系统[2023-04-21]综合应用所学C语言知识,设计完成一个软件工程专业课程信息管理系统。本系统拟实现以下功能:【数据文件】课程信息数据文件。每门课程的信息包含:课程编号,课程名称,理论课时实验课时、学分、开课学期(8个学期)、课程性质《分为必修、选修、限......