gpt4 book ai didi

c++ - 为什么简单的 C++ vector 函数会产生下标越界?

转载 作者:行者123 更新时间:2023-11-27 23:55:22 28 4
gpt4 key购买 nike

<分区>

这是一个简单的函数,它接受一个整数 vector ,并且只对奇数项求和。

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

using namespace std;

int f(vector<int> & n)
{
vector<int>::iterator itA;

int sum = 0;
for (itA = n.begin(); itA != n.end(); itA++)
{
if (*itA % 2 == 1) sum += *itA;
}


return sum;
}

int main()
{
vector<int> a;
a[0] = 3;
a[1] = 5;
a[2] = 6;
a[3] = 1;
cout << f(a) << endl;
system("pause");
}

运行时,由于 vector 下标超出范围而崩溃。为什么会这样?迭代器从 vector.begin() 开始,遍历 vector ,而迭代器不指向 vector.end(),这应该是整个 vector 。

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com