C++:无法解决矢量订阅错误
c++: can't solve vector subscription error
我试图通过遍历我的向量来获取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];
以上所有内容都得出了相同的结果,他们只是以略微不同的方式进行。正如他们所说,剥猫皮的方法总是不止一种。
相关文章:
- Project Euler问题4的错误解决方案
- 如何解决gcc编译器优化导致的centos双编译器设置中的分段错误
- 如何解决错误:SCIP C++中的 SCIP 阶段无效 <10>
- 使用 bfs 解决连接组件问题时得到错误的答案
- 在 leetcode 上提交解决方案时出现堆栈缓冲区溢出错误
- 你能解释一下什么运行时错误是如何解决它的吗?
- 我看到"use of undeclared identifier"错误,有人可以告诉我如何解决它吗?
- 我的固定时间步长与增量时间和插值的解决方案是错误的吗?
- Arduino 用于语句错误。令牌之前的预期')' ';'。如何解决这个问题?
- 如何在 macOS 卡塔琳娜上解决此错误?
- 如何解决一元"*"(有"字符")错误的无效类型参数?
- Clang 8 带有静态 constexpr 和数组的链接器错误 - 错误是什么以及如何解决它?
- 我正在尝试制作一个自平衡机器人,但编译时存在错误。我不知道如何解决它
- Visual Studio 2017 中的 QtMetaObject 未解决的外部错误
- 我想在 c++ 中对单向链表进行冒泡排序,但我一直面临左值错误,无法解决它
- C++抽象类参数错误解决方法
- 运行VS2008解决方案时运行时错误;解决方案正在构建良好
- g++链接错误-解决方法有效的原因
- 故障错误解决
- 这是HackerRank的错误解决方案