C ++将指定的矢量内容复制到另一个矢量

时间:2013-03-18 13:32:22

标签: c++ vector copy

我创建了一个矢量:

std::vector<std::string> mero; // earlier it filled with more than 500 data

之后我想创建另一个向量,它只占用mero向量的一部分。 (例如:从第100到第250)

3 个答案:

答案 0 :(得分:11)

std::vector的构造函数(this link中的数字4)带有两个迭代器。它构造了一个新的向量,包括从第一个迭代器(包括)到第二个迭代器(独占)的所有元素。

std::vector<std::string> partOfMero(mero.begin() + 100, mero.begin() + 250);

这将在新构建的向量中包含mero[100]mero[249]

答案 1 :(得分:5)

std::vector有一个带两个迭代器的构造函数,因此您可以指定要复制的范围:

std::vector<std::string> v1;
std::vector<std::string>::const_iterator first = v1.begin() + 100;
std::vector<std::string>::const_iterator last = v1.begin() + 250;
std::vector<std::string> v2(first, last)

这将构建v2,使其包含从v1.begin()+100v1.begin()+250之前的所有元素的副本。

答案 2 :(得分:5)

您可以使用begin获取第一个迭代器,并使用advance获得所需的任何数量:

vector<int> sub(advance(begin(miro), 100),
                advance(begin(miro), 250));