當我們向vector中新增元素時,如果vector空間大小不足,則會以原大小的兩倍另外配置一塊較大的新空間,然後將原空間的內容拷貝過來,在新空間的內容末尾新增元素,並釋放原空間。
vector的空間動態增加大小,並不是在原空間之後的相鄰位址增加新空間,因為vector的空間是線性連續分配的,並不能原空間之後的可供配置的空間。
因此,對vector的任何操作,一旦引起空間的重新配置,指向原vector的所有迭代器就會失效。
對於乙個vector的物件,記憶體的分布如下圖:
從上往下看:
就函式而言:
由於動態增長會引起動態分配記憶體空間、拷貝原空間、釋放原空間,這些過程會降低效率。因此,可以使用reserve(n)預先分配一塊較大的指定大小的記憶體空間,這樣當指定大小的記憶體空間未使用完時,是不會重新分配記憶體空間的。這樣提公升了效率,只有當n>capacity()時,呼叫reserve(n)才會改變vector的容量。
vector空間的動態增長
vector相關操作小結
其實我原本只想對vector小結一下的 好吧,重點還是它,其他兩個由於性質相似所以大概說一下vector,array,valarray是c 提供的三個陣列模板,各自有著不同的優勢,三者均位於 命名空間std中,使用時均需要包括與之同名的標頭檔案 常用物件建立語法 vector vt n elem v...
表空間相關操作
1 檢視表在那個表空間 select tablespace name,table name from user talbes where table name test 2 獲取使用者的預設表空間 select username,default tablespace from dba users w...
C 容器vector類的相關操作
一 capacity容量 vector的容量永遠大於或等於其大小,一旦容量等於大小,便是滿載,下次再有新增元素,整個vector容器就得另尋居所。1 c.capacity 不重新分配記憶體空間的話,c可以儲存多少元素 2 c.reserve 分配至少能容納n個元素的記憶體空間 vector v fo...