Создание подсписка из вектора <int>в C ++ - PullRequest
9 голосов
/ 28 августа 2011

Есть ли встроенный метод STL для этого?

В Java есть list.subList (a, b) для извлечения [a, b).Подобный метод в STL C ++?

Ответы [ 3 ]

17 голосов
/ 28 августа 2011

Конечно.

std::vector<int> subList(&originalVector[a], &originalVector[b]);
14 голосов
/ 28 августа 2011

Вы можете сделать:

#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. Если вам не нужна копия и вы хотите быть более эффективным, может быть предпочтительнее обойти пары итераторов (или указателей). Это позволит избежать копирования.

3 голосов
/ 14 апреля 2014

Конечно.

std::vector<int> subList(originalVector.begin() + a, originalVector.begin() + b);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...