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

标签 c++ stdvector

我有一个输入 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/

相关文章:

c++ - srand(时间(NULL));这个声明实际上在做什么

c++ - 指针模板清除函数的 vector 无法编译并显示 "undefined reference"消息

c++ - 删除 std::vector<std::string> 中与另一个给定 std::string 中的字符匹配的元素

c++ - vector.push_back 上的 "glibc free(): invalid next size(fast)"?

c++ - 从 std::vector 删除元素后更新存储的索引

c++ - vector push_back零成空 vector

c++ - 在 C++ OpenMP 代码中测量执行时间

c++ - 在 3D 中可视化点、线和三角形(C++ API 和文件格式)

c++ - wchar_t 是否保证与任何整数类型不同?

C++ 将数据插入链表时发生内存泄漏