程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> STL中vector小結,STLvector小結

STL中vector小結,STLvector小結

編輯:C++入門知識

STL中vector小結,STLvector小結


(1)使用vector之前必須包含頭文件<vector>:#include<vector>

(2)namespace std{
     template <class T,
               class Allocator = allocator<T> >
     class vector;    
    }
vector的元素可以是任意類型T,但必須具備assignable和copyable兩個性質。第二個template參數可有可無,用來定義內存模型,缺省的模型是C++標准程序庫提供的allocator。

(3)在末端附加或刪除元素時,vector的性能相當好。可是如果你在前端或中部安插或刪除元素,性能就不怎麼樣了,因為操作點之後的每一個元素都必須移動到另一個位置,而每一次移動都得調用assignment操作符

(4)vector性能優異的秘籍之一就是配置比其所容納的元素所需更多的內存。當vector申請的內存被用盡時,vector會重新申請一片新的內存,通常新申請的內存會是原來內存的兩倍.一旦內存重新配置,和vector元素相關的所有references,pointers,iterators都會失效

(5)vector的各項操作:
vector<Elem> c      產生一個空vector
vector<Elem> c1(c2)      產生另一個同型vector的副本
vector<Elem> c(n)      利用元素的default構造函數生成一個大小為n的vector
vector<Elem> c(n, elem)      產生一個大小為n的vector,每個元素值都是elem
vector<Elem> c(beg, end)      產生一個vector,以區間[beg, end)作為元素初值
c.~vector<Elem>()      銷毀所有元素並釋放內存

c.size()      返回當前的元素數量
c.empty()      判斷vector是否為空
c.max_size()      返回可容納的元素最大數值
c.capacity()      返回重新分配空間前所能容納的元素最大數量
c.reserve()      如果容量不足,擴大之
c1 compare c2      compare可為==,!=,<,>,<=和>=

c1 = c2      將c2全部元素賦值給c1
c.assign(n, elem)      復制n個elem,賦值給c
c.assign(beg, end)      將區間[beg, end)內的元素賦值給c
c1.swap(c2)      將c1和c2元素互換

c.at(idx)      返回索引idx所標示的元素,如果idx越界則拋出out_of_range異常
c[idx]      返回索引idx所標示的元素,不進行范圍檢查
c.front()      返回第一個元素,不檢查元素是否存在
c.back()      返回最後一個元素,不檢查元素是否存在

c.begin()      返回一個隨機存取迭代器,指向第一個元素
c.end()      返回一個隨機存取迭代器,指向最後元素的下一個位置
c.rbegin()      返回一個逆向迭代器,指向逆向迭代的第一個元素
c.rend()      返回一個逆向迭代器,指向逆向迭代的最後元素的下一個位置
vector迭代器持續有效,除非發生兩種情況:(1)使用者在一個較小的索引位置上安插或移除元素(2)由於容量的變化而引起內存的重新分配

c.insert(it, elem)      在it位置上插入一個elem副本並返回新元素的位置
c.insert(it, n, elem)      在it位置上插入n個elem副本,無返回值
c.insert(it, beg, end)      在it位置上插入區間[beg, end)內的所有元素副本,無返回值
c.push_back(elem)      在尾部添加一個elem副本
c.pop_back()      移除最後一個元素(但不回傳)
c.erase(it)      移除it位置上的元素,返回下一個元素的位置
c.erase(beg, end)      移除[beg, end)區間內的所有元素,返回下一個元素的位置
c.resize(num)      將元素數量改為num(如果size()變大了,多出來的新元素都需以default構造函數構造完成)
c.resize(num, elem)      將元素數量改為num(如果size()變大了,多出來的新元素都是elem的副本)
c.clear()      將容器清空

  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved