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

szu*_*rse 6 c++ copy vector

我创建了一个矢量:

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]新构造的向量.


jua*_*nza 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)
Run Code Online (Sandbox Code Playgroud)

这将构造v2为包含v1.begin()+100之前所有元素的副本v1.begin()+250.


Pet*_*ood 5

您可以使用第一个迭代器begin,advance它可以使用您需要的任何数量:

vector<int> sub(advance(begin(miro), 100),
                advance(begin(miro), 250));
Run Code Online (Sandbox Code Playgroud)

  • +1 用于使用 `begin`/`advance` 而不是旧的 `vector::begin`/`vector::operator+`。 (2认同)