假设我有一个名为std::vector
的{{1}},其中包含10个元素,我想创建一个新的vec
,其中包含vec的第2和第5个元素之间的所有元素(包括)。我可以看到如何编写std::vector
循环来执行此操作,但看起来STL的for
可以更简洁地执行此操作。但是我并没有真正得到迭代器:我已经看到你如何使用copy()
和start()
迭代从第一个元素到最后一个元素的向量,但是上面的情况如何,我想要的地方有些不同的东西?感谢。
答案 0 :(得分:9)
您不需要std::copy
来创建包含第一个子集的新vector
。您可以使用vector
的构造函数及其迭代器(doc here)来实现此目的:
std::vector<myType> vec = ...;
std::vector<myType> other(vec.begin() + 1, vec.begin() + 5);
但你必须确定,你没有超过vector
的限制,否则你将得到未定义的行为。
答案 1 :(得分:1)
Constantinus对他的答案是正确的 - 你不需要复制。
但是在不同的情况下,你想要追加元素,你可以使用它:
std::vector< type > vec = ... ;
std::vector< type > othervec = ...;
std::copy( vec.begin(), vec.end(), std::back_inserter(othervec) );