gpt4 book ai didi

c++ - C++对大小为N的子 vector 进行迭代

转载 作者:行者123 更新时间:2023-12-02 09:47:46 24 4
gpt4 key购买 nike

我有一个输入 vector ,可以是任何大小。我想要的是将此 vector 划分为每个大小为64的 vector 并执行某些操作。输入 vector 的大小不必一定是64的倍数。
假设我有一个大小为200的 vector ,那么我应该将其分为3个大小为64的 vector 和1个大小为8的 vector 。
到目前为止,我想到的是:

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 :

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);
}

关于c++ - C++对大小为N的子 vector 进行迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63934014/

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