23

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

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

4

2 に答える 2

37

これを試して:

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*
} 
于 2012-06-23T14:41:10.457 に答える
14

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

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

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

機能を変更したくない場合は、それを として宣言することもできますstring const&(または単にstringですが、不要なコピーが発生します)。

于 2012-06-23T14:41:03.770 に答える