vector subscript out of range

本文详细解析了 C++ 中 vector 容器的正确使用方法,包括如何避免下标越界错误,介绍了 resize 和 push_back 方法的使用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

给出一段程序:

#include<iostream>
#include<string>
#include<vector>

using namespace std;

void main()
{
vector<Point2f> a;

a[0].x = 5;
a[0].y = 5;


cout<<a.size()<<endl;
}

出现错误:

vector subscript out of range


原因:
下标是修改不是插入,如果要用下标,需要保证初始化时候有足够的元素;

a[i]=m;
你的vector<Point2f> 对象a 没有分配空间.你不能这么访问
可以使用push_back添加元素
或者对a执行resize(n)分配好空间后在来使用[]访问元素


修改如下:


#include<iostream>
#include<string>
#include<vector>


using namespace std;


void main()
{
vector<string> a;

a.resize(10); // 1. 加这一行
a[0].x=5;
a[0].y=5;

//a.push_back(5 ); // ??
        //a.push_back(5 );   //??

cout<<a.size()<<endl;
}
在用vector时,增加元素通常用第二种方式。[]通常可以用来读取其中的元素,极少用于给其中的元素赋值

两种方法:
   vector<string> a;
   //a.resize(2);            // 1. 加这一行
   //a[0]="aaaaaa";
   //a[1]="xxxxxx";
 
   a.push_back("aaaaaa");    // 2. 或者这么写
   a.push_back("xxxxxx");



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值