使用迭代器从向量中提取子向量

时间:2015-12-03 09:24:47

标签: c++ vector

我试图使用带有此代码的迭代器从int的另一个子向量中提取int的子向量:

std::vector<int> Original; std::vector<int> NewVec;
NewVec(Original.begin(), Original.begin()+5);

并且这不起作用,只有当我在同一行提取中声明NewVec时才会这样:

std::vector<int> NewVec(Original.begin(), Original.begin()+5);

那么,是否可以使用NewVec使其声明在构建之前? 感谢。

2 个答案:

答案 0 :(得分:3)

如果您想为现有std::vector分配子范围,可以使用assign()成员:

NewVec.assign(Original.begin(), Original.begin() + 5);

当然,这假设Original至少有5个元素。

答案 1 :(得分:2)

您可以使用std::copy

NewVec.reserve(5);
std::copy(std::begin(Original), std::begin(Original)+5,
          std::back_inserter(NewVec));

std::vector::assign

NewVec.assign(std::begin(Original), std::begin(Original)+5);