59、回答⼀下 STL ⾥ resize和 reserve 的区别
resize():改变当前容器内含有元素的数ᰁ(size()),eg: vectorv; v.resize(len);v的size变为len,如 果原来v的size⼩于len,那么容器新增(len-size)个元素,元素的值为默认为0.当 v.push_back(3);之后,则是3是放在了v的末尾,即下标为len,此时容器是size为len+1; reserve():改变当前容器的最⼤容量(capacity),它不会⽣成元素,只是确定这个容器允许放⼊多少对象,如果reserve(len)的值⼤于当前的capacity(),那么会重新分配⼀块能存len个对象 的空间,然后把之前v.size()个对象通过 copy construtor 复制过来,销毁之前的内存;
Last updated