C++:无法解决矢量订阅错误

c++: can't solve vector subscription error

本文关键字:错误 解决 C++      更新时间:2023-10-16

我试图通过遍历我的向量来获取hours中所有变量的总和。现在我收到这个矢量订阅错误,我不知道如何解决它。这是我的代码:

int hulpInt = hours[0];
for (int i = hours[1]; i != hours[hours.size()-1]; i++)
{
    hulpInt = hulpInt + i;
}
int HOUR = hulpInt + hours[hours.size()];

如果您需要更多代码,只需注释。

解决这个问题的两种方法。

#include <functional>
#include <numeric>
#include <vector>

方法 1:使用 vector.size()

int hulpInt =0;
for(int i=0;i<hours.size();i++){
    hulpInt+= hours[i];
}

方法2:使用标准::累积

int hulpInt = std::accumulate(hours.begin(),hours.end(),0);

请参阅此文档。

你应该做这样的事情:

int sum = 0;
for (int i = 0; i < hours.size(); ++i) {
    sum += hours[i];
}

当您收到错误时,最好也包含该错误。

具体来说,我猜你正在用hours[hours.size()]索引,因为向量是从零开始的索引。

STL 容器具有漂亮的迭代器,有助于保持边界:

int h[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
std::vector<int> hours(h, h+12);
int total(0);
for (std::vector<int>::const_iterator i(hours.begin()); i != hours.end(); ++i)
    total += *i;

STL还具有使用这些迭代器为您执行常见操作的算法:

#include <numeric>
int h[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
std::vector<int> hours(h, h+12);
int total = std::accumulate(hours.begin(), hours.end(), 0);

当然,您也可以滚动自己的循环:

int h[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
std::vector<int> hours(h, h+12);
int total(0);
for (int i(0); i < int(hours.size()); ++i)
    total += hours[i];

以上所有内容都得出了相同的结果,他们只是以略微不同的方式进行。正如他们所说,剥猫皮的方法总是不止一种。