c++容器| []与 at () 性能与安全大对比
// ==============================================// vector [] 和 at() 全方位对比// 面试必考 + 工程避坑// ==============================================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/),并保留原文链接。
还没有评论,来说两句?