当前位置: 首页 > news >正文

江西省注册和城乡建设厅网站网站怎么自己编辑模块

江西省注册和城乡建设厅网站,网站怎么自己编辑模块,公司网站的建设与运营管理制度,扬州市市政建设处网站vector是一个封装了动态大小数组的顺序容器,它能够存放各种类型的对象。 可以删除元素、可以插入元素、可以查找元素,做这些工作我们无需管理容器内存。容器内存管理,这种脏活累活全部交由vector管理。了解一下vector的内存管理策略,能够更加充分的利用内存。 1 vector内存…vector是一个封装了动态大小数组的顺序容器,它能够存放各种类型的对象。 可以删除元素、可以插入元素、可以查找元素,做这些工作我们无需管理容器内存。容器内存管理,这种脏活累活全部交由vector管理。了解一下vector的内存管理策略,能够更加充分的利用内存。 1 vector内存分配策略 1.1 vector扩大容量的本质 vector 的大小和容量相等(size==capacity)也就是满载时,如果再向其添加元素,那么 vector 就需要扩容。vector 容器扩容的过程需要经历以下 3 步: 完全弃用现有的内存空间,重新申请更大的内存空间;将旧内存空间中的数据,按原有顺序移动到新的内存空间中;最后将旧的内存空间释放。这也就解释了,为什么 vector 容器在进行扩容后,与其相关的指针、引用以及迭代器可能会失效的原因。 1.2 vector使用示例 通过一个vector简单示例,看看vector是如何管理内存的。 程序1 #include iostream #include vectorclass MyClass { public:MyClass() {++contruct_cnt;std::cout this ": MyClass constructor called " contruct_cnt " times" std::endl;}~MyClass() {++deconstrcut_cnt;std::cout this ": MyClass deconstrcut called " deconstrcut_cnt " times" std::endl;}MyClass(const MyClass tmp) {++copy_construct_cnt;std::cout this ": MyClass copy_constructor called " copy_construct_cnt " times" "copy from " tmp std::endl;} private: static int contruct_cnt;static int deconstrcut_cnt;static int copy_construct_cnt; };int MyClass::contruct_cnt = 0; int MyClass::deconstrcut_cnt = 0; int MyClass::copy_construct_cnt = 0; void VectorTest1() {MyClass a, b, c, d, e;std::vectorMyClass myVector;std::cout std::endl "======a======" std::endl;myVector.push_back(a);std::cout "vector capacity is " myVector.capacity() std::endl;std::cout "vector size is " myVector.size() std::endl;std::cout std::endl "======b======" std::endl;myVector.push_back(b);std::cout "vector capacity is " myVector.capacity() std::endl;std::cout "vector size is " myVector.size() std::endl;std::cout std::endl "=======c=====" std::endl;myVector.push_back(c);std::cout "vector capacity is " myVector.capacity() std::endl;std::cout "vector size is " myVector.size() std::endl;std::cout std::endl "=======d=====" std::endl;myVector.push_back(d);std::cout "vector capacity is " myVector.capacity() std::endl;std::cout "vector size is " myVector.size() std::endl;std::cout std::endl "========e====" std::endl;myVector.push_back(e); std::cout "vector capacity is " myVector.capacity() std::endl;std::cout "vector size is " myVector.size() std::endl;// 当myVector离开作用域时,它的析构函数会被调用,从而调用每个元素的析构函数 }int main() {VectorTest1();return 0; }执行输出结果如下: ThinkPad-P15v-Gen-2i:~/work/ybb$ ./a.out 0x7ffd8b07403b: MyClass constructor called 1 times 0x7ffd8b07403c: MyClass constructor called 2 times 0x7ffd8b07403d: MyClass constructor called 3 times 0x7ffd8b07403e: MyClass constructor called 4 times 0x7ffd8b07403f: MyClass constructor called 5 times======a====== 0x55c2cb9282c0: MyClass copy_constructor called 1 timescopy from 0x7ffd8b07403b vector capacity is 1 vector size is 1======b====== 0x55c2cb9282e1: MyClass copy_constructor called 2 timescopy from 0x7ffd8b07403c 0x55c2cb9282e0: MyClass copy_constructor called 3 timescopy from 0x55c2cb9282c0 0x55c2cb9282c0: MyClass deconstrcut called 1 times vector capacity is 2 vector size is 2=======c===== 0x55c2cb9282c2: MyClass copy_constructor called 4 timescopy from 0x7ffd8b07403d 0x55c2cb9282c0: MyClass copy_constructor called 5 timescopy from 0x55c2cb9282e0 0x55c2cb9282c1: MyClass copy_constructor called 6 timescopy from 0x55c2cb9282e1 0x55c2cb9282e0: MyClass deconstrcut called 2 times 0x55c2cb9282e1: MyClass deconstrcut called 3 times vector capacity is 4 vector size is 3=======d===== 0x55c2cb9282c3: MyClass copy_constructor called 7 timescopy from 0x7ffd8b07403e vector capacity is 4 vector size is 4========e==== 0x55c2cb9282e4: MyClass copy_constructor called 8 timescopy from 0x7ffd8b07403f 0x55c2cb9282e0: MyClass copy_constructor called 9 timescopy from 0x55c2cb9282c0 0x55c2cb9282e1: MyClass copy_constructor called 10 timescopy from 0x55c2cb9282c1 0x55c2cb9282e2: MyClass copy_constructor called 11 timescopy from 0x55c2cb9282c2 0x55c2cb9282e3: MyClass copy_constructor called 12 timescopy from 0x55c2cb9282c3 0x55c2cb9282c0: MyClass deconstrcut called 4 times 0x55c2cb9282c1: MyClass deconstrcut called 5 times 0x55c2cb9282c2: MyClass deconstrcut called 6 times 0x55c2cb9282c3: MyClass deconstrcut called 7 times vector capacity is 8 vector size is 5 0x55c2cb9282e0: MyClass deconstrcut called 8 times 0x55c2cb9282e1: MyClass deconstrcut called 9 times 0x55c2cb9282e2: MyClass deconstrcut called 10 times 0x55c2cb9282e3: MyClass deconstrcut called 11 times 0x55c2cb9282e4: MyClass deconstrcut called 12 times 0x7ffd8b07403f: MyClass deconstrcut called 13 times 0x7ffd8b07403e: MyClass deconstrcut called 14 times 0x7ffd8b07403d: MyClass deconstrcut called 15 times 0x7ffd8b07403c: MyClass deconstrcut called 16 times 0x7ffd8b07403b: MyClass deconstrcut called 17 times上面的代码,加了很多打印,可以很好的分析程序执行的情况,这里主要说一下myVector在析构的时候,要调用存放在vector中元素的析构,再释放myVector占用的空间。 同时可以看到在填充vector的时候,会发生大量的拷贝构造,造成资源浪费,下面给出一个极端示例展示Vector在push_back时调用的拷贝构造函数次数。 程序2 #include iostream #include vectorclass MyClass { public:MyClass() {++contru
http://www.w-s-a.com/news/452877/

相关文章:

  • 网站国内空间价格销售技巧
  • 广安建设企业网站qq互联网站备案号
  • 京东网站建设的要求vs2010做的网站
  • wordpress 新闻杂志主题佛山企业网站排名优化
  • 选服务好的网站建设金华市开发区人才网
  • 广州建站商城南阳高质量建设大城市网站
  • 网站建设合同封面模板做代炼的网站
  • 外贸网站建站要多少钱南昌优化排名推广
  • 做公司网站的尺寸一般是多大企业管理网站
  • 苏州网站设计公司兴田德润i简介做签证宾馆订单用啥网站
  • 网站页面设计工具做网站租空间
  • 做智能网站系统百度提交入口
  • 网站建设代理商电话网站规划和建设方案
  • 双桥区网站制作seo 首页
  • 电子商务网站建设前期准备wordpress域名指向二级目录
  • 汕头建站网站模板淮北做网站电话
  • 手机做logo用什么网站服务器安全防护
  • 课程分销的网站怎么做北京企业网站建设方案
  • 吴兴区建设局网站湖北企业网站建设
  • 网页与网站的区别是什么2023年8月份新冠
  • 唐山网站建设外包公司安卓手机怎么搭建网页
  • 国内做网站最大的公司计量检测网站平台建设方案
  • 重庆沛宣网站建设网页制作初学者
  • php网站漂浮广告代码网络营销跟网站推广有啥区别
  • wordpress调用图片优化型网站建设的基本要求
  • 郑州模板网站建设策划公司做网站怎么赚钱滑县电
  • 东昌府聊城网站优化秦皇岛市妇幼保健院
  • 做网站能赚钱吗网页升级访问通知天天更新
  • 做网站使用什么软件的免费招聘网
  • 宁波网站建设公司推荐哪家淄博网站制作公司服务