c++ - C++ 迭代大小为 N 的子向量
问题描述
我有一个可以是任意大小的输入向量。我想要的是把这个向量分成每个大小为 64 的向量并做一些事情。输入向量的大小不一定是 64 的倍数。
所以假设我有一个大小为 200 的向量,那么我应该将它分成 3 个大小为 64 的向量和 1 个大小为 8 的向量。
到目前为止,我想到的是以下内容:
vector<double> inputVector;
vector<vector<double>> resultVector;
UInt16 length = inputVector.size();
int div = (length % 64) == 0 ? length / 64 : (length / 64) + 1;
for (int i = 0, j = 0; i < div; i++) {
vector<double> current
for (int k = 0; k < 64; k++) {
current.push_back(inputVector[j]);
if (j++ >= length) break;
}
resultVector.push_back(current);
if (j >= length) break;
}
我相信会有更好的方法,但我找不到任何例子
解决方案
您可以使用迭代器来创建子向量:
vector<double> inputVector;
vector<vector<double>> resultVector;
for (auto it = inputVector.cbegin(), e = inputVector.cend(); it != inputVector.cend(); it = e) {
e = it + std::min<std::size_t>(inputVector.cend() - it, 64);
resultVector.emplace_back(it, e);
}
推荐阅读
- amazon-web-services - dynamodb“GetItem 操作:未找到请求的资源”/“提供的关键元素与架构不匹配”
- c++ - Raspberry Pi 零 W 上的 OpenCV - 浮点异常
- php - PHP | 输入控制语句不起作用
- sql - SQL Server 月末
- sql - 产品单价频繁变化时创建库存数据库
- string - 在 url 中使用字符串查询但指定字段集的自动填充复选框
- mysql - 从其他表更新 db avg 值中的字段
- vue.js - 如何让我的 v-show 在 Vue JS 中显示组件
- java - 无法弄清楚为什么我的选择排序作为 java 方法的实现不能按预期工作
- jquery - 使用 JQuery 向表单添加元素会导致提交时出现“无法解密防伪令牌”错误