从vector对象生成子列表在c++中

Producing a subList from a vector<int> in C++

本文关键字:列表 c++ vector 对象      更新时间:2023-10-16

是否有一个内置的STL方法来做到这一点?

在java中,有list.subList(a,b)用于提取[a,b)。类似的方法在STL c++ ?

可以。

std::vector<int> subList(&originalVector[a], &originalVector[b]);

你可以这样做:

#include <vector>
#include <cassert>
int main() {
    std::vector<int> x;
    for (int i=0; i<10; ++i) {
        x.push_back(i);
    }
    // Here we create a copy of a subsequence/sublist of x:
    std::vector<int> slice_of_x(x.begin() + 3, x.begin() + 7);
    assert(slice_of_x.size() == 7-3);
    assert(slice_of_x[0] == 3);
    return 0;
}

这将生成x所请求部分的副本。如果您不需要副本,并且希望提高效率,则最好传递迭代器(或指针)对。这样可以避免复制。

可以。

std::vector<int> subList(originalVector.begin() + a, originalVector.begin() + b);