我创建了一个矢量:
std::vector<std::string> mero; // earlier it filled with more than 500 data
Run Code Online (Sandbox Code Playgroud)
之后我想创建另一个向量,它只占用向量的一部分mero.(例如:从第100到第250)
Dav*_*rtz 11
有一个构造函数std::vector(此链接中为数字4 )需要两个迭代器.它构造一个新的向量,包括从第一个迭代器(包括)到第二个迭代器(独占)的所有元素.
std::vector<std::string> partOfMero(mero.begin() + 100, mero.begin() + 250);
Run Code Online (Sandbox Code Playgroud)
这将包括mero[100]通过mero[249]新构造的向量.
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)
Run Code Online (Sandbox Code Playgroud)
这将构造v2为包含v1.begin()+100之前所有元素的副本v1.begin()+250.
您可以使用第一个迭代器begin,advance它可以使用您需要的任何数量:
vector<int> sub(advance(begin(miro), 100),
advance(begin(miro), 250));
Run Code Online (Sandbox Code Playgroud)