You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何我的C++程序访问vector元素时运行报错?

问题分析与解决:C++ Vector运行时错误

你这段代码编译通过但运行报错的核心原因是访问了空vector的越界元素。

默认构造的std::vector<int> a;是一个空容器,它的size()为0,不存在索引为0的元素。operator[]访问vector时不会做越界检查(这是它和at()方法的关键区别),所以编译阶段不会报错,但运行时会触发未定义行为,导致程序崩溃或抛出错误。

修复方案

有两种常见的合法处理方式:

  • 方式一:初始化时指定vector的大小
    修改vector的定义,直接创建包含指定数量元素的容器:

    std::vector<int> a(1); // 创建含1个int元素的vector,默认初始值为0
    

    此时容器内存在索引为0的元素,后续赋值和访问操作均合法。

  • 方式二:先添加元素再访问
    通过push_back方法先向vector中添加元素,再进行索引访问:

    std::vector<int> a;
    a.push_back(0); // 向容器末尾添加一个元素
    a[0] = 10; // 此时访问索引0合法
    

修复后完整代码示例

以方式一为例,修改后的代码如下:

#include <iostream>
#include <vector>

int main(){
    std::vector<int> a(1);
    a[0]= 10;

    std::cout << a[0] << std::endl;

    a[0]= a[0]*10+5;
    std::cout << a[0] << std::endl;
}

内容的提问来源于stack exchange,提问作者Aqdas Rafat Khan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 20:46:05