我想在向量中找到一个值,然后创建新的向量,包含该值以及它之后的所有值。
例如:我有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);
但它显示编译器错误或程序崩溃。
答案 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());