容器类关于C++中怎么创建一个容器类?

容器类  时间:2021-06-29  阅读:()

有谁能总结一下C++容器类什么情况下会经常用到

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

c++中的容器主要使用如vector,list (顺序容器) 这些都是已经封装好了的,包含头文件"vector","list",通过迭代器iterator访问容器中的数据,map,set(关联容器),关联容器map键值对形式出现key-value,key唯一,mutimap多映射可以不唯一;set是一个单一值的集合,如1,2,3,4 顺序容器:vector,list 分别举例 对比 vector容器的特点:在内存中是一片连续的存储区域,初始化的时候,可以指定容量,比如如果定义容量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 然后操作可以参考这些这些类封转的方法。

关联容器:set map mutimap mutiset key-->value形式 1--1 2--2 3--3 set 形式 1234,键值唯一; 具体容器的操作方法,可以调用其成员函数.

关于容器类的英文单词(带中文意思的)

碟子: small dish/ dish 盘子: tray 盆: basin 锅: pan/ pot/ boiler 碗: bowl 杯子: cup/ glass 缸: vat/ jar 瓢: ladle/ dipper 瓶: bottle /vase/ pitcher 罐子: jar /jug/ pitcher/ pot 鼎: tripod 盅: cup 壶: pot/kettle 桶: pail /bucket/barrel/bin 樽: goblet/ bottle/ wine-jar

C++中怎么创建一个容器类?

#include?<algorithm> struct?Person { //...Person成员变量 void?print() { //todo?输出Person信息 } }; class?PersonSet { public: enum{DEFAULT_CAPACITY?=?4}; typedef?Person ElemType; typedef?int SizeType; PersonSet(); ~PersonSet(); void?add(ElemType&?person); //往容器中加入一个对象 //这里返回Person&是不合理的(如果最后没有元素了,这个空的引用要怎么返回???)。

//可以改成Person*或者void void?removeElement(); //删除容器中的最后一个对象 void?removeElement(int?const&index);//删除容器中指定位置的对象 int?getSize()?const;//获取当前容器中有多少个对象 void?print()?const;//打印容器中各个对象的信息 protected: void?checkGrow(); void?checkShrink(); void?grow(); void?shrink(); protected: ElemType** _elements; //为什么要用二级指针,只是为了考察它的用法??? SizeType _capacity; SizeType _size; int _index; //index有何用??? }; PersonSet::PersonSet() :_capacity(DEFAULT_CAPACITY) ,_size(0) ,_index(0) { _elements?=?new?ElemType*; *_elements?=?new?ElemType[_capacity]; } PersonSet::~PersonSet() { delete?[]?*_elements; delete?_elements; } void?PersonSet::add(ElemType&?person) { checkGrow(); (*_elements)[_size++]?=?person; } void?PersonSet::removeElement() { _size--; checkShrink(); } void?PersonSet::removeElement(int?const&index) { if(index?<?0?||?index?>?_size) return; //元素依次前移 std::copy(*_elements+index+1,?*_elements+_size-1,?*_elements+index); _size--; checkShrink(); } int?PersonSet::getSize()?const { return?_size; } void?PersonSet::print()?const { for(SizeType?i?=?0;?i?<?_size;?i++) { (*_elements)[i].print(); } } void?PersonSet::checkGrow() { if(_size?==?_capacity) grow(); } void?PersonSet::checkShrink() { if(_size?<?_capacity?/?2) shrink(); } void?PersonSet::grow() { _capacity?>>=?2; ElemType*?p?=?new?ElemType[_capacity]; std::copy(*_elements,?*_elements?+?_size?-?1,?p); delete?[]?*_elements; *_elements?=?p; } void?PersonSet::shrink() { _capacity?<<=?2; }

关于C++中怎么创建一个容器类?

因为我们使用数组实现的,为了防止过多的分配释放内存,就有了一个_capacity和_size,我们可以通过_size来保证数据的可靠性,所以_size--就可以了. 通过重载[],我们可以通过object.[x],判断x是否大于_size来保证可靠性

数脉科技:六月优惠促销,免备案香港物理服务器,E3-1230v2处理器16G内存,350元/月

数脉科技六月优惠促销发布了!数脉科技对香港自营机房的香港服务器进行超低价促销,可选择30M、50M、100Mbps的优质bgp网络。更大带宽可在选购时选择同样享受优惠,目前仅提供HKBGP、阿里云产品,香港CN2、产品优惠码续费有效,仅限新购,每个客户可使用于一个订单。新客户可以立减400元,或者选择对应的机器用相应的优惠码,有需要的朋友可以尝试一下。点击进入:数脉科技官方网站地址数脉科技是一家成...

tmhhost(100元/季)自带windows系统,香港(三网)cn2 gia、日本cn2、韩国cn2、美国(三网)cn2 gia、美国cn2gia200G高防

tmhhost可谓是相当熟悉国内网络情况(资质方面:ISP\ICP\工商齐备),专业售卖海外高端优质线路的云服务器和独立服务器,包括了:香港的三网cn2 gia、日本 cn2、日本软银云服务器、韩国CN2、美国三网cn2 gia 云服务器、美国 cn2 gia +200G高防的。另外还有国内云服务器:镇江BGP 大连BGP数据盘和系统盘分开,自带windows系统,支持支付宝付款和微信,简直就是专...

Puaex:香港vds,wtt套餐,G口带宽不限流量;可解流媒体,限量补货

puaex怎么样?puaex是一家去年成立的国人商家,本站也分享过几次,他家主要销售香港商宽的套餐,给的全部为G口带宽,而且是不限流量的,目前有WTT和HKBN两种线路的方面,虽然商家的价格比较贵,但是每次补一些货,就会被抢空,之前一直都是断货的状态,目前商家进行了补货,有需要这种类型机器的朋友可以入手。点击进入:puaex商家官方网站Puaex香港vds套餐:全部为KVM虚拟架构,G口的带宽,可...

容器类为你推荐
5e5e5e如何更改bootstrap navbar的颜色 03 Topics 03 Ruby China音乐代码css控制背景音乐代码java程序员招聘java程序员学出来工作好不好找,工资咋样?selectintoACCESS中提示“不允许在select into语句中使用多值字段”怎样删除聊天记录如何删除聊天空间导航怎么设置QQ空间个性导航微盟价格微盟怎么收费?在线操作系统什么是计算机操作系统?其作用主要有哪些飞信发信息要钱吗用飞信发短信要钱吗??怎么使用飞信??急测试post自检什么意思
国际域名抢注 godaddy域名解析 什么是域名解析 息壤备案 2017年黑色星期五 好看的桌面背景图片 网站被封 tna官网 购买国外空间 移动服务器托管 中国电信网络测速 带宽测试 广州主机托管 rewritecond websitepanel winserver2008r2 俄勒冈州 冰盾ddos防火墙 次时代主机 lighttpdwindows 更多