c++ - 2D vector 的子 vector

标签 c++ slice stdvector

我有std::vector<std::vector<double>> A(300, std::vector<double>(500))

我想创建一个子范围为A的新 vector :sub-vector[5:10][25:100]
我怎样才能做到这一点?

最佳答案

您可以使用迭代器。首先创建 vector :

std::vector<std::vector<double>> sub_vector;
sub_vector.reserve(5);

然后使用vector的范围构造函数填充它:
for (std::size_t i = 5; i < 10; ++i) {
    sub_vector.emplace_back(A[i].begin() + 25, A[i].begin() + 100);
}

笔记:
  • 您有责任确保索引在范围内。否则,将导致未定义的行为。
  • 处理封闭范围。如果要关闭范围,则需要在结束索引中添加一个。
  • 关于c++ - 2D vector 的子 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58669481/

    相关文章:

    c++ - gdb 继续而不是步进

    golang 检查 slice 的长度(如果它是 slice ) map[string]interface{}

    json - 为什么我的代码在我输入 assert 接口(interface)时会出现 panic?

    c++ - 如何在给定的 vector 索引范围内找到最小元素?

    c++ - 将 C++ vector 作为成员放入使用内存池的类中

    c++ - 以特定值拆分数组 C++

    c++ - cocos2d-x JSON文件解析

    c++ - 如何将线程与容器 C++ 一起使用

    c++ - 返回表值计数的最佳 R 数据结构

    arrays - 我将如何使用散列切片来初始化存储在数据结构中的散列?