在向量中查找值并从该位置提取子向量

时间:2016-03-25 01:17:21

标签: c++ vector

我想在向量中找到一个值,然后创建新的向量,包含该值以及它之后的所有值。

例如:我有vec = {10, 20, 30, 40, 50},我想找到30并获得子向量{30, 40, 50}

我试过

vector<int> vec = {10, 20, 30, 40, 50, 60};
std::vector<int>::iterator it;
it = find (vec.begin(), vec.end(), 30);
vector<int> newvec;
copy(it, vec.end, newvec);

copy(vec.begin()+it, vec.end(), newvec);

但它显示编译器错误或程序崩溃。

1 个答案:

答案 0 :(得分:1)

您试图复制到未分配的地方。

您可以使用std::vector的构造函数,该构造函数需要两个InputIterator并创建范围的副本。

试试这个:

vector<int> vec = {10, 20, 30, 40, 50, 60};
std::vector<int>::iterator it;
it = find (vec.begin(), vec.end(), 30);
vector<int> newvec(it, vec.end());