【发布时间】:2013-03-06 20:46:04
【问题描述】:
我创建了一个向量:
std::vector<std::string> mero; // earlier it filled with more than 500 data
之后我想创建另一个向量,它只占用mero 向量的一部分。 (例如:从第 100 个到第 250 个)
【问题讨论】:
我创建了一个向量:
std::vector<std::string> mero; // earlier it filled with more than 500 data
之后我想创建另一个向量,它只占用mero 向量的一部分。 (例如:从第 100 个到第 250 个)
【问题讨论】:
std::vector 的构造函数(this link 中的第 4 个)需要两个迭代器。它构造了一个新向量,包括从第一个迭代器(包括)到第二个迭代器(不包括)的所有元素。
std::vector<std::string> partOfMero(mero.begin() + 100, mero.begin() + 250);
这将包括 mero[100] 到 mero[249] 在新构建的向量中。
【讨论】:
[first, last] 令人困惑
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()+100 到v1.begin()+250 之前的所有元素的副本。
【讨论】: