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

用.aspx做网站网站开发手册下载

用.aspx做网站,网站开发手册下载,绍兴做网站选哪家,上海做网站的费用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/565178/

相关文章:

  • 四川哪家网站推广做的好网站开发人才需求
  • 什么网站可以找手工活做一站式服务平台官网
  • 做购物网站的步骤网站核心词如何做
  • 做品牌设计网站公司网站没做301怎么做301
  • 服务流程企业网站wordpress文章的使用
  • 网站开发组合淘宝网站开发选什么类目
  • 广东手机网站建设个人电脑做网站主机
  • 健身俱乐部网站开发文档建一个网站需要什么条件
  • 买的网站模板怎么做建设行政管理部门网站
  • 怎么让百度多收录网站关键词seo深圳
  • 陕西交通建设集团网站体检个人网站设计模板田田田田田田田田
  • ae模板网站推荐安徽建筑信息平台
  • 新网站建设代理商wordpress模板商店
  • 中国十大设计素材网站wordpress发布失败
  • 江西省建设监理网站网页制作与设计是什么
  • 在招聘网站做销售怎么样网址你懂我意思正能量不用下载ios
  • 高端企业网站定制公司企业网站2000元
  • 成都网站建设:河北省建设工程质量监督网站
  • 四川省建设厅官网信息查询平台北京seo关键词优化外包
  • 网站建设响应式是什么意思wordpress弹窗打开网页
  • 做美工需要参考的网站漳州做网站的公司
  • 用源码建设网站关于网站开发的自我评价
  • 网站设计师图片自助建站编辑器
  • 网站建设的常用技术有哪些深圳建筑工地招工
  • 做软装找图片的网站wordpress 替代
  • 制作网站的后台公众号做视频网站会封吗
  • 广西企业建站邯郸景区网站制作
  • 开发商城网站多少钱城厢区建设局网站
  • 网站外链多的危害天水市建设局网站
  • 网站接入商学交互设计网站