web-dev-qa-db-ja.com

C ++文字列のベクトルを反復処理するにはどうすればよいですか?

このC++ベクトルを反復処理するにはどうすればよいですか?

vector<string> features = {"X1", "X2", "X3", "X4"};

18
Simplicity

これを試して:

for(vector<string>::const_iterator i = features.begin(); i != features.end(); ++i) {
    // process i
    cout << *i << " "; // this will print all the contents of *features*
}

C++ 11を使用している場合、これも有効です。

for(auto i : features) {
    // process i
    cout << i << " "; // this will print all the contents of *features*
} 

これがコンパイルされる場合に使用しているC++ 11では、次のことが可能です。

for (string& feature : features) {
    // do something with `feature`
}

これは範囲ベースのforループです。

機能を変更したくない場合は、string const&(または単にstringですが、これにより不必要なコピーが発生します)。

10
Konrad Rudolph