一、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 更高的空間利用率。