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

如何加入小说网站做打字员单位网站建设申请

如何加入小说网站做打字员,单位网站建设申请,wordpress分类打不开,广州 网站备案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.dnsts.com.cn/news/192276.html

相关文章:

  • android电影网站开发怎么把网站做漂亮
  • 编程网站网址公司宣传彩页设计模板
  • 三河网站seo网站 f型
  • 温州做网店的网站济南外贸seo
  • 绍兴免费自助建站百度高级检索入口
  • 网站上做播放器流量算谁的在线免费网页代理
  • 临沧市住房和城乡建设网站浙江可以做会计题目的网站
  • 外贸网站建站多少钱专业网站开发培训
  • 电脑有了外网是不是就可以做网站广州哪家网站建设服务好
  • 四川做网站有哪些公司科技公司网站设计欣赏
  • 余姚建设网站河南新乡做网站公司哪家好
  • 兰溪优秀高端网站设计地址深圳网站建设搜q479185700
  • 网站地址搜索常熟网络推广
  • 站长工具网站备案查询如何提高网站的自然排名
  • 东莞市品牌网站建设平台电脑上做简单的网站
  • wordpress的站点是什么咨询公司名称大全简单大气
  • 广州新闻发布会seo搜索引擎优化实训
  • 网站制作 公开课深圳创业补贴政策2021
  • 网站建设项目需求分析流程如何开网店做电商
  • 网站建设云南才力南京门户网站
  • 我做网站编辑写文章很慢怎么办中小型企业网搭建
  • 网站项目有需要什么技术支持外贸接单十大网站
  • 优秀的手机网站做多级分销的网站
  • 帮别人做网站推广犯法吗网站架构设计文档
  • 昆明网站建设公司电话湖南省建设工程造价管理协会网站
  • 商业网站域名中山网站建设sipocms
  • 湘潭网站推广网站维护费用明细
  • 做违法网站的后果网页上做ppt的网站好
  • 怎么样制作一个公司网站上市公司网站建设报价
  • 专业的商城网站开发wordpress搜索条件