Nehmen wir an, ich habe einen Vektor von Zeichenfolgen wie unten definiert.Iterieren durch bestimmte Elemente eines Vektors mit einem anderen Vektor
std::vector<std::string> names;
names.push_back("Zero" );
names.push_back("One" );
names.push_back("Two" );
names.push_back("Three");
names.push_back("Four" );
names.push_back("Five" );
names.push_back("Six" );
names.push_back("Seven");
names.push_back("Eight");
names.push_back("Nine" );
Auch, lassen Sie uns sagen, dass ich einen Vektor haben, die, welche Elemente in einer Schleife definiert durch:
std::vector<int> indices;
indices.push_back(0);
indices.push_back(5);
indices.push_back(6);
Wie kann ich auf dem Vektor iterieren names
nach den Elementen des Vektors indices
zu zum Beispiel Zugang Namen: "Zero"
, "Five"
und "Six"
? Ich weiß, dass:
for(vector<string>::iterator it=names.begin() ; it < names.end(); it++)
Iterierte über alle Elemente oder Elemente, für die wir ein Muster finden können, beispielsweise jedes andere Element, etc. Aber, wie etwa über die Elemente iteriert die kein Muster oder schwer haben, ein Muster zu finden? Wie kann ein Vektor für die Iteration in einem anderen Vektor verwendet werden? Etwas wie:
for(vector<int>::iterator it=indices.begin() ; it < indices.end(); it++)
{
names.at(indices.at(it))
...
}
Anscheinend verwenden, 'Auto 'ist problematisch für' C + 11'. Der Compiler beschwert sich über 'automatische Änderungen Bedeutung in C++ 11; Bitte entfernen Sie es. – AFP
Das ist spezifisch für 'C++ 14'. Wenn Sie 'C++ 11' verwenden, müssen Sie' auto' durch den spezifischen Typ ersetzen. – foo