6

ベクトルを作成しました:

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

その後、ベクトルの一部のみをとる別のベクトルを作成したいと思いますmero。(例:100番目から250番目まで)

4

3 に答える 3

12

2つのイテレータを使用する(このリンクstd::vectorの番号4 )のコンストラクタがあります。これは、最初のイテレータ(包括的)から2番目のイテレータ(排他的)までのすべての要素を含む新しいベクトルを構築します。

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には2つのイテレータを使用するコンストラクタがあるため、コピーする範囲を指定できます。

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)

これにより、から1つ前v2までのすべての要素のコピーが含まれるように構成されます。v1.begin()+100v1.begin()+250

于 2013-03-18T13:34:49.090 に答える