c++容器| []与 at () 性能与安全大对比

文章工具
// ==============================================// vector [] 和 at() 全方位对比// 面试必考 + 工程避坑// ==============================================#include <iostream>#include <vector>using namespace std;int main() {    vector<int> v = {10, 20, 30};    // ==================== 1. operator[] 无越界检查 ====================    // 特点:    // 1. 不检查下标是否合法    // 2. 越界 → 未定义行为(崩溃/乱码/死机)    // 3. 速度极快(无开销)    // 4. 可读可写    // 5. 不抛异常    cout << v[0] << endl;    // 正常    // cout << v[100];      // 越界:直接崩溃/乱码,无任何提示    // ==================== 2. at() 有越界检查 ====================    // 特点:    // 1. 强制检查下标合法性    // 2. 越界 → 抛出 out_of_range 异常    // 3. 速度稍慢(有检查开销)    // 4. 可读可写    // 5. 安全、稳定    cout << v.at(0) << endl; // 正常    // v.at(100);           // 越界:抛出异常,可捕获    // ==================== 3. 异常捕获演示 ====================    try {        v.at(999);    } catch (const out_of_range& e) {        cout << "at() 越界异常:" << e.what() << endl;    }    return 0;}// ==================== 核心总结(面试必背) ====================// 1. []   :无检查、超快、不安全、越界崩溃、不抛异常// 2. at() :有检查、稍慢、安全、越界抛异常、稳定// 3. 性能 :[] > at()// 4. 安全 :at() > []// 5. 工程:高频循环用[],外部输入用at()



⚠️ 版权声明

本文为免费文章,欢迎转载。转载请注明出处:一木科技(https://www.pingquan.vip/2026/05/31/c%e5%ae%b9%e5%99%a8-%e4%b8%8e-at-%e6%80%a7%e8%83%bd%e4%b8%8e%e5%ae%89%e5%85%a8%e5%a4%a7%e5%af%b9%e6%af%94/),并保留原文链接。