c++ - 如何从数组中间开始循环?
问题描述
有一个给定的伪代码。
int Function(X : array[P..Q] of integer)
1 maxSoFar = 0
2 for L = P to Q
我正在使用 C 并试图将其更改为 C++ 代码。
我苦苦挣扎的原因是我不知道如何表达它是从循环中的“P”开始的。即使没有参数,我也不知道如何在初始化之前做到这一点。
int Function(vector<int> X)
{
int maxSoFar = 0;
for (int I = 0; I < X.size(); I++) ;
}
这就是我所做的。我想知道它是否与伪代码相同。
解决方案
您可以将矢量大小除以 2:
#include <vector>
#include <iostream>
using namespace std;
int f(vector<int> v) {
int maxSoFar = 0;
int len = v.size();
for (int i = len / 2; i < len; i++) { // i = len / 2, starts from the middle
maxSoFar += v[i];
cout << v[i] << ' ';
cout << maxSoFar << endl;
}
}
int main(void) {
vector<int> v = {1, 3, 5};
f(v);
}
输出:
3 3
5 8
您应该仔细查看wikipedia 上的 for 循环:for (initialization; break condition; incrementation)
推荐阅读
- javascript - React DND drop event on `useDrop` 未触发
- rest - SoapUI POST 到 REST 并在 Groovy 中附加文件
- ruby-on-rails - 在 rails 的电子邮件中发送 reset_password_token
- django - 如何以编程方式在 Django 中存储 S3 图像
- python - 获取异常值的列名和索引
- python - strptime 从月份中删除 0 并且未被 %m 识别
- session - 从 facelets 访问会话对象
- java - 使用 Room 库获取最近插入的行 ID
- email - Buddypress 在用户更新时为多个 xprofile 字段发送管理员电子邮件通知
- arrays - 错误:ARRAY 缺少其值的类型定义 Sequelize