6

我创建了一个向量:

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

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

4

3 回答 3

12

(此链接std::vector中的数字 4 )有一个构造函数,它需要两个迭代器。它构造一个新向量,包括从第一个迭代器(包括)到第二个迭代器(不包括)的所有元素。

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

这将包括mero[100]mero[249]新构建的向量中。

于 2013-03-18T13:34:44.263 回答
6

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

vector<int> sub(advance(begin(miro), 100),
                advance(begin(miro), 250));
于 2013-03-18T13:37:05.930 回答
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使得它包含所有元素的副本 fromv1.begin()+100到 one before v1.begin()+250

于 2013-03-18T13:34:49.090 回答