close

 

在教學的開始,首先,我們要先知道,Vector是什麼 !

 

 

成員函式概觀

vector 類別是以容器(Container) 模式為基準設計的,也就是說,基本上它有 begin()end()size()max_size()empty() 以及 swap() 這幾個方法。

  • 存取元素的方法
    • vec[i] - 存取索引值為 i 的元素參照。 (索引值從零起算,故第一個元素是vec[0]。)
    • vec.at(i) - 存取索引值為 i 的元素的參照,以 at() 存取會做陣列邊界檢查,如果存取越界將會拋出一個例外,這是與operator[]的唯一差異。
    • vec.front() - 回傳 vector 第一個元素的參照。
    • vec.back() - 回傳 vector 最尾元素的參照。
  • 新增或移除元素的方法
    • vec.push_back() - 新增元素至 vector 的尾端,必要時會進行記憶體配置。
    • vec.pop_back() - 刪除 vector 最尾端的元素。
    • vec.insert() - 插入一個或多個元素至 vector 內的任意位置。
    • vec.erase() - 刪除 vector 中一個或多個元素。
    • vec.clear() - 清空所有元素。
  • 取得長度/容量
    • vec.size() - 取得 vector 目前持有的元素個數。
    • vec.empty() - 如果 vector 內部為空,則傳回 true 值。
    • vec.capacity() - 取得 vector 目前可容納的最大元素個數。這個方法與記憶體的配置有關,它通常只會增加,不會因為元素被刪減而隨之減少。
  • 重新配置/重設長度
    • vec.reserve() - 如有必要,可改變 vector 的容量大小(配置更多的記憶體)。在眾多的 STL 實做,容量只能增加,不可以減少。
    • vec.resize() - 改變 vector 目前持有的元素個數。
  • 疊代 (Iterator)
    • vec.begin() - 回傳一個Iterator,它指向 vector 第一個元素。
    • vec.end() - 回傳一個Iterator,它指向 vector 最尾端元素的下一個位置(請注意:它不是最末元素)。
    • vec.rbegin() - 回傳一個反向Iterator,它指向 vector 最尾端元素的。
    • vec.rend() - 回傳一個Iterator,它指向 vector 的第一個元素。

 

 

 

T 是 vector 要儲存的物件集合的型別,該 vector 的變數名稱是 v。T 可以是任何符合 Copy/Move Assignable 條件的型別,包括使用者自訂型別。如果 T 不符合 Copy / Move Assignable 或者複製 / 移動成本很高昂,可以考慮使用 T* 甚至 std::unique_ptr<T> 來代替 T。

 

 

 

 

---------------------------------------------------------------------------------------------------------------------------------------------------

 

其實說白了,你可以把它想像成是Array 的進階,本來在還沒看維基百科之前,是有手寫一些內容想要當教學的,不過似乎維基百科的內容更貼切,所以就直接以維基百科的內容為主。

 

這邊一樣給出一個題目當練習,是之前在網路上看到的一個題目。

 

Q               :

Find all numbers disappeared in an Array

 

Description :

Given an array of integers where 1 <= a[i] <= n ( n = size of array ) , some elements appear twice and others appear once.  Find all the elements of [1,n] inclusive that do not appear in this array ;

 

Example : 

Input : [ 4,3,2,7,8,2,3,1 ]

Output;[ 5, 6 ]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

arrow
arrow
    文章標籤
    C C++ vector 用法
    全站熱搜

    Eric 發表在 痞客邦 留言(0) 人氣()


    留言列表 留言列表

    發表留言
    Close

    您尚未登入,將以訪客身份留言。亦可以上方服務帳號登入留言

    請輸入暱稱 ( 最多顯示 6 個中文字元 )

    請輸入標題 ( 最多顯示 9 個中文字元 )

    請輸入內容 ( 最多 140 個中文字元 )

    reload

    請輸入左方認證碼:

    看不懂,換張圖

    請輸入驗證碼