1、vector是同一型別物件的集合。vector不是一種資料型別,而是乙個類模板(class template),可以用來定義任意多種資料型別,如vector、vector都是資料型別。
2、vector 尖括號內type指定物件的型別。
建構函式型別如下:
vector v1 ; default constructor v1為空
vector v2(v); v2 is acopy of v1
vector v3(n,i); v3包含n個值為i的元素
vector v4(n); v4含有值初始化的元素的n個副本
3、vector值的初始化
vector
t若是內建型別,則標準庫用0來建立元素初始化式。
t若是類型別:
1)含有建構函式的類型別,用該類的預設建構函式建立元素初始化式
2)有自定義建構函式,但沒有預設建構函式,在初始化時,不僅要提供元素個數,還要提供元素初始值。
3)沒有定義任何型別的建構函式,標準庫任然產生乙個帶初始值的物件,物件的每乙個成員都進行了值初始化。
4、vector物件動態增長
vector物件(以及其他標準庫容器物件),有乙個重要屬性就是可以在執行時高效的新增元素。
雖然可以對給定元素個數的vector預先分配記憶體,但更有效的方法是先初始化乙個空的vector物件,然後再動態的新增元素。
5、vector物件的操作
v.empty() return boolean
v.size() 函式返回的結果是該型別的元素的個數
v.push_back(t)在v的末尾新增乙個值為t的元素
v[n]
v1 = v2 把v1中元素替換為v2中元素的副本
v1 == v2 return boolean
!= , < , <= , > , >= 保持操作符原有的含義
注意:size_type 和v.size()各自的用法
size_type 總是和一定的資料型別相關使用size_type時,必須指出該型別是在**定義的
vector::size_type//ok
vecto::size_type//error
vector ivecivec.size()//ok ivec.size()返回的結果是vector::size_type型別
6、vector下標操作
和陣列類似的操作方法用下標訪問它們,下標從0開始
//用for迴圈將vector中元素置零
for (vector::size_type ix = 0 ; ix != ivec.size() ; ++ix)
ivec[ix] = 0;
注意:1)用 != 來檢查下標是否越界,而不是用 <
2)for語句的e2,在每次都呼叫size()成員函式,而不是在進入迴圈前儲存它返回的值
c++程式設計師習慣使用 != 而不是 < 來編寫迴圈判斷條件
由於vector可以動態增長,所以不能在迴圈前儲存size()的返回值
必須是已經存在的元素才能用下標進行索引,通過下標操作進行賦值時,不會新增任何元素。
vector ivec;// empty vector
for (vector::size_type ix = 0 ; ix !=10 ; ++ix)
ivec[ix] = ix; // error vector沒有任何元素
ivec.push_back(ix); //ok 新增新元素到vector中
ivec[10]; // error 下標溢位 !! 切忌
vector容器有以下操作:
c.assign(beg,end) 將[beg; end)區間中的資料賦值給c。
c.assign(n,elem) 將n個elem的拷貝賦值給c。
c.at(idx) 傳回索引idx所指的資料,如果idx越界,丟擲out_of_range。
c.back() 傳回最後乙個資料,不檢查這個資料是否存在。
c.begin() 傳回迭代器中的第乙個資料位址。
c.capacity() 返回容器中資料個數。
c.clear() 移除容器中所有資料。
c.empty() 判斷容器是否為空。
c.end() 指向迭代器中末端元素的下乙個,指向乙個不存在元素。
c.erase(pos) 刪除pos位置的資料,傳回下乙個資料的位置。
c.erase(beg,end) 刪除[beg,end)區間的資料,傳回下乙個資料的位置。
c.front() 傳回第乙個資料。
get_allocator 使用建構函式返回乙個拷貝。
c.insert(pos,elem)在pos位置插入乙個elem拷貝,傳回新資料位置。
c.insert(pos,n,elem) 在pos位置插入n個elem資料。無返回值。
c.insert(pos,beg,end) 在pos位置插入在[beg,end)區間的資料。無返回值。
c.max_size() 返回容器中最大資料的數量。
c.pop_back() 刪除最後乙個資料。
c.push_back(elem) 在尾部加入乙個資料。
c.rbegin() 傳回乙個逆向佇列的第乙個資料。
c.rend() 傳回乙個逆向佇列的最後乙個資料的下乙個位置。
c.resize(num) 重新指定佇列的長度。
c.reserve() 保留適當的容量。
c.size() 返回容器中實際資料的個數。
c1.swap(c2)
swap(c1,c2) 將c1和c2元素互換。同上操作。
SYBASE資料庫學習筆記
sybase菜鳥學習筆記 sybase版本 ase 12.5.4 中文版 1 無法load資料庫,提示can t open a connection to site syb backup 問題產生原因 1 sybase資料庫備份伺服器沒有啟動 2 當使用backup server做dump load...
MySQL資料庫學習筆記 五
mysql資料庫學習筆記 五 mysql字串函式 日期時間函式 一 常見字串函式 1 char length 獲取長度 字元為單位 2 format 格式化 3 insert 替換的方式插入 4 instr 獲取位置 5 left right 取左 取右 6 length 獲取長度 位元組為單位 7...
SQL server資料庫總結筆記
建表的兩種方式 一 兒子,爸爸,爺爺式 包含式,屬於式 至少需要兩個表。經典案例 學校 班級 學生 建表訣竅 1 乙個物件 實體 乙個表 2 小表裡面有大表 主鍵 下級的小表包含上一級大表的主鍵,比如學生表裡面包含班級表的主鍵,班級表包含學校表的主鍵,學生表裡面沒有必要包含學校表的主鍵,不是不行,而...