我试图使用带有此代码的迭代器从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使其声明在构建之前? 感谢。
答案 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);