vector的空間相關操作

2021-09-14 04:32:57 字數 653 閱讀 5512

當我們向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...