解决【C++】vector subscript out of range下标越界

1.检查遍历语句是否正确:

vector <Girl> girls;
for (unsigned int g = 0; g < girls.size(); g++) {
	girls[g]...
	}
  • 下标使用g而非i: 针对girls
    1)增强可读性
    2)同时遍历其他vector时便于区分
	for (unsigned int b = 0; b < boys.size(); b++) {
		cout << boys[b] << " 的配对女士有:" << endl;
		for (unsigned int g = 0; g < girls.size(); g++) {
			if (boys[b].satisfied(girls[g]) == true && 
				girls[g].satisfied(boys[b]) == true) {//注意调用的是否是函数以及函数是否含参以及含参顺序
				//cout << boys[b].getName() << "<-->" << girls[g].getName() << endl;如果只打印姓名,可能有重名,无法确定实际是哪位
				//因为database与Boy和Girl类不存在继承关系,所以只能通过对象调用public方法
				cout << girls[g] ;
			}
		}
		cout << endl;//一位男士的所有配对结束后空一行
	}

2.发现下标不对应:

在这里插入图片描述

  • 错因:复制完全对等方法bestMatchBoy()后,漏改对等替换
  • 相似方法实现时,复制后替换步骤:
    1)归纳替换规则:boy<->girl,g<->b
    2)写于vs内置git存储信息栏
    在这里插入图片描述
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: "vector subscript out of range" 的意思是向量下标越界。这通常是指在访问向量中不存在的元素时发生的错误。例如,如果向量中只有3个元素,但程序试图访问第4个元素,则会发生此错误。 ### 回答2: vector subscript out of range 是由于访问了 vector 中不存在的元素导致的错误。 在使用 vector 时,我们可能会使用索引操作符 [] 对元素进行访问,比如: ```c++ vector<int> vec = {1, 2, 3}; int num = vec[4]; ``` 上面的代码会抛出 vector subscript out of range 的异常,因为 vec 中只有 3 个元素,访问索引为 4 的元素是非法的。 另外,使用迭代器访问 vector 元素也可能出现 vector subscript out of range 的错误,比如: ```c++ vector<int> vec = {1, 2, 3}; auto it = vec.begin() + 4; int num = *it; ``` 上面的代码同样会抛出 vector subscript out of range 的异常,因为迭代器 it 指向的位置已经超出了 vec 中的范围。 为了避免 vector subscript out of range 错误,我们应该注意在使用索引操作符或迭代器时,确保访问的位置在 vector 的有效范围内。同时,使用 vector 提供的方法如 at() 等也可以帮助我们更好地控制访问 vector 元素的位置。 ### 回答3: “vector subscript out of range”是一个在使用C++中STL(Standard Template Library)中vector容器时常见的错误。这个错误表示访问vector中不存在的下标vector是一个可以动态增加大小的数组,可以通过下标来访问其中的元素。下标从0开始计数,而且必须小于vector的大小。 这个错误的出现通常是由于以下几种情况引起的: 1.访问了超出vector大小的下标:当使用vector容器时,我们要注意下标的范围。如果下标大于等于vector的大小,就会出现vector subscript out of range错误。 2.访问了负数的下标vector下标不能为负数,否则会出现vector subscript out of range错误。 3.删除或添加元素时出现错误:当向vector中添加或删除元素时,需要注意下标的变化。如果删除元素时,下标越界,就会出现vector subscript out of range错误。同样的,如果在非空vector中添加元素时,下标不正确,也会出现这个错误。 解决这种问题的方法有以下几点: 1.检查访问的下标是否正确,必须小于vector的大小。 2.检查下标是否为负数。 3.检查删除或添加元素时下标的变化是否正确。 在开发中,我们在使用vector容器时,细心的使用下标时就不会出现vector subscript out of range错误,否则会导致程序崩溃。当我们遇到这个错误时,要结合错误提示和代码进行排查,找到错误的原因并及时修复。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值