Mit C++ 11, möchte ich über einen Vektor iterieren und geben Sie einen Typ zurück, der angibt, dass der Index nicht gefunden wurde.Iterieren über Vektor des benutzerdefinierten Objekts mit zwei Bedingungen
Ich bin zu der traditionellen for(;;)
Schleife und Angabe der Index manuell, wie mein Code unten zeigt.
inline std::size_t ItemList::FindItem(Items& Item)
{
for (std::size_t i = 0; i < ItemVector.size(); i++)
{
if (ItemVector[i]->GetId() == Item.GetId() && !ItemVector[i]->GetName().compare(Item.GetName()))
{
return i + 1;
}
}
return 0;
}
ich auch den Index +1, um von 0 einen Wert zurückgeben zu erhöhen, mit (unsigned size_t aufzunehmen), um die Rufmethode, um anzuzeigen, dass der Index nicht gefunden wurde (Ich verstehe das asinine ist) . Ich nehme an, es wäre besser, etwas mehr wie std::end()
zurückgeben?
Wäre die Verwendung eines C++ 11-Iterator-Ansatzes effizienter? Der Vektor wird zu einer großen Anzahl auffüllen und der Fund muss schnell sein.
Da die ursprüngliche Frage geht 'Item' Bezug genommen wird, gehe ich davon aus, es ist ein großer Schrift . Vielleicht möchten Sie als Referenz mit '[& Item]' aufnehmen. –
@ FrançoisAndrieux Ja, danke, Antwort aktualisiert. – Holt
Dies wird 'end()' zurückgeben, wenn die Bedingung nicht erfüllt ist, oder? – user0000001