当前位置: 首页 > 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.hkea.cn/news/14343915/

相关文章:

  • 中国建造师官方网站中国服务外包网网址
  • 有自己的网站怎么做淘宝客网站开发钱包
  • 网页新建站点网站设计与开发期末考试题
  • xml网站地图在线生成工具wordpress标签tag链接静态化
  • 口碑好的秦皇岛网站建设价格许昌做网站公司汉狮价格
  • 如何建设高校网站网站架构教程
  • 怎样做自己可以发布消息的网站东莞市企业信息查询网
  • 网站建设中页面成都住建局官网住建蓉e办
  • 永倍达电商平台专业网站优化公司报价
  • 专为男人做的网站专业网站开发报价
  • 网站登录注册页面模板php教育网站开发
  • 中国东凤网站制作佛山市做网站的
  • 不用域名访问网站潍城营销型网站建设
  • 滕建建设集团网站国内低代码平台有哪些
  • 网站开发程序员招聘wordpress首页正文内容怎么改
  • scatter网站开发wordpress手机版怎么做
  • 山东建设局网站百度贴吧官网入口
  • 网站空间和数据库的关系网站推广页面 英语
  • 国际物流网站深圳seo技术
  • 做网站什么职业h5制作平台排名
  • 苏州 营销型网站 高端网站做外贸公司网站
  • 专业网站建设娱乐网站策划书
  • 网站安全加固铁岭房地产网站建设
  • 网站编辑是做什么仿微博网站模板
  • 做网站之前的工作wordpress积分插件中文免费
  • 查企业哪个app最好seo网站推广有哪些
  • 如何运行asp网站仙桃城市建设投资公司网站
  • 如何做网站导航栏的搜索引擎优化沂源放心企业网站建设方案报价
  • 网站设计预算网站注册转化率
  • 用wordpress建站一定要先有域名和空间吗婺源网站建设