首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

C++ std::array 容器完整使用指南與避坑技巧

     編輯:關於C++

std::array 是 C++11 引入的固定大小數組容器,封裝 C 風格數組,支援迭代器、標準算法,本文詳解初始化陷阱、賦值技巧與最佳實踐。

初始化陷阱

std::array<int, 5> ia = {1, 2, 3, 4, 5};  // GCC 警告:missing braces
std::array<int, 5> ia = {{1, 2, 3, 4, 5}}; // 正確:雙層大括號

原因:std::array 內部封裝 int[5],需符合聚合初始化規則。

賦值與複製

std::array<int, 5> ia = {{1, 2, 3, 4, 5}};
std::array<int, 5> ia2;
ia2 = ia;  // 整體複製,高效便捷
// ia2 = {1,2,3,4,5}; // 錯誤:不支援列表賦值

遍歷方式

// 範圍 for(推薦)
for (const auto& i : ia) cout << i << " ";

// 迭代器
for (auto it = ia.begin(); it != ia.end(); ++it) cout << *it << " ";

// 下標訪問
for (size_t i = 0; i < ia.size(); ++i) cout << ia[i] << " ";

核心優勢

  • 固定大小,棧上分配,無動態內存開銷
  • 支援 .size()、.at() 邊界檢查、迭代器、標準算法
  • 值語義:賦值/傳參為整體複製,無指針衰減問題
  • 可作為結構體成員、標準容器元素

完整示例

#include <iostream>
#include <array>
#include <algorithm>

int main() {
    std::array<int, 5> ia = {{1, 2, 3, 4, 5}};
    
    for (const auto i : ia) cout << i << " ";
    cout << endl;
    
    std::array<int, 5> ia2;
    ia2 = ia;  // 複製賦值
    
    for (const auto i : ia2) cout << i << " ";
    cout << endl;
    
    // 使用標準算法
    std::reverse(ia.begin(), ia.end());
    for (const auto i : ia) cout << i << " ";
    cout << endl;
    
    return 0;
}

輸出:
1 2 3 4 5
1 2 3 4 5
5 4 3 2 1

建議優先使用 std::array 替代 C 風格固定數組,獲得類型安全與標準庫兼容性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved