首先明確容器中的 size( ) 函式是用來返回當前容器中的元素的個數;而 capacity( ) 函式則是用來返回容器記憶體空間即緩衝區的大小;
1.方法一:直接宣告同乙個匿名容器型別與原有容器交換,匿名容器會自動銷毀;vector( ).swap(num);
2.方法二:先宣告乙個臨時物件,然後與目標容器交換資料:vectortemp; (temp).swap(num); 臨時物件未被初始化,其緩衝區大小為0,沒有資料,與目標物件交換資料,則容器num中的緩衝區就沒有了;
注意:不要寫成這種形式,vector(temp).swap(num); 因為這個temp容器之前並沒有定義;編譯器會報錯
3.方法三:先將目標容器的記憶體清空,再利用swap函式與原有容器進行交換,即:num.clear( ); vector(num).swap(num);
注意:單單使用clear( )函式不會清空記憶體,只是把容器中儲存的資料清除掉;使用clear()函式後容器內的元素個數為0,即size()函式返回的結果為0;但是記憶體沒有釋放,即capacity()函式的返回結果不為0
下面附上上述三種方法的集中**
#
include
#include
using
namespace std;
intmain()
;//清空容器記憶體的第一種方式
vectort<
int>()
.swap()
;//清空容器記憶體的第二種方式
vector<
int>temp;
temp.
swap
(num)
;//清空容器記憶體的第三種方式
num.
clear()
; vector<
int>
(num)
.clear;
//利用size()函式和capacity()函式來檢測容器的元素個數和記憶體大小
cout
}
以上是作者本人在學習過程中做的乙個小總結,如有不完善之處或者紕漏之處,歡迎批評指正!!! 記憶體分配的三種方式
把所有的點都說到,才能說明你有足夠的專案經驗,在實際工作的時候不會因為一些小問題而產生一些嚴重的bug,也證明了你有實力勝任這份工作。要回答這個問題,我們必須先要理解c 的記憶體管理方式,需要站在記憶體四區的角度去審視一下 這樣整個理解了記憶體分配的方式,回答的時候就只需要注意一些細節了。寫乙個例子...
記憶體分配的三種方式
1.記憶體分配方式 記憶體分配方式有三種 1 從靜態儲存區域分配。內存在程式編譯的時候就已經分配好,這塊內存在程式的整個執行期間都存在。例如全域性變數,static變數。2 在棧上建立。在執行函式時,函式內區域性變數的儲存單元都可以在棧上建立,函式執行結束時這些儲存單元自動被釋放。棧記憶體分配運算內...
IOC容器三種注入方式
介面注入 instance.properties 該檔案應放在classes資料夾下 檔案的內容如下 student com.sias.student public class studentfactory get set方法注入 property寫法如下 或 或 附 idref和ref區別 idr...