C++11/14介紹(四)——新增容器(一)

一、std::array

std::array會在編譯時創建一個固定大小的數組,std::array不能夠被隱式的轉換成指針,使用std::array很簡單,只需指定其類型和大小即可:

std::array<int, 4> arr= {1,2,3,4};

int len = 4;
std::array<int, len> arr = {1,2,3,4}; // 非法, 數組大小參數必須是常量表達式

將其兼容c風格的接口:

void foo(int *p, int len) {
    return;
}

std::array<int 4> arr = {1,2,3,4};

// C 風格接口傳參
// foo(arr, arr.size());           // 非法, 無法隱式轉換
foo(&arr[0], arr.size());
foo(arr.data(), arr.size());

// 使用 `std::sort`
std::sort(arr.begin(), arr.end());

二、std::forward_list

std::forward_list 是一個列表容器,使用方法和 std::list 基本類似。

需要知道的是,和 std::list 的雙向鏈表的實現不同,std::forward_list使用單向鏈表進行實現,提供了 O(1) 複雜度的元素插入,不支持快速隨機訪問(這也是鏈表的特點),也是標準庫容器中唯一一個不提供 size()方法的容器。當不需要雙向迭代時,具有比 std::list 更高的空間利用率。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章