Ich möchte lediglich prüfen, ob ein Element im Vektor vorhanden ist oder nicht, damit ich jeden Fall behandeln kann.
if ( item_present )
do_this();
else
do_that();
Ich möchte lediglich prüfen, ob ein Element im Vektor vorhanden ist oder nicht, damit ich jeden Fall behandeln kann.
if ( item_present )
do_this();
else
do_that();
Sie können diesen Code ausprobieren:
#include <algorithm>
#include <vector>
// You can use class, struct or primitive data type for Item
struct Item {
//Some fields
};
typedef std::vector<Item> ItemVector;
typedef ItemVector::iterator ItemIterator;
//...
ItemVector vtItem;
//... (init data for vtItem)
Item itemToFind;
//...
ItemIterator itemItr;
itemItr = std::find(vtItem.begin(), vtItem.end(), itemToFind);
if (itemItr != vtItem.end()) {
// Item found
// doThis()
}
else {
// Item not found
// doThat()
}
Sie können die find
Funktion, zu finden in der std
Namespace, d.h. std::find
. Sie passieren die std::find
Funktion die begin
y end
Iterator aus dem zu durchsuchenden Vektor zusammen mit dem gesuchten Element und vergleichen Sie den resultierenden Iterator mit dem Ende des Vektors, um zu sehen, ob sie übereinstimmen oder nicht.
std::find(vector.begin(), vector.end(), item) != vector.end()
Sie sind auch in der Lage, diesen Iterator zu derefenzieren und ihn wie jeden anderen Iterator zu verwenden.
Ich persönlich habe in letzter Zeit Vorlagen verwendet, um mehrere Arten von Containern auf einmal zu verarbeiten, anstatt nur mit Vektoren zu arbeiten. Ich fand ein ähnliches Beispiel online (kann mich nicht erinnern, wo), so Kredit geht an wer auch immer ich dieses gestohlen haben. Dieses spezielle Muster scheint auch rohe Arrays zu verarbeiten.
template <typename Container, typename T = typename std::decay<decltype(*std::begin(std::declval<Container>()))>::type>
bool contains(Container && c, T v)
{
return std::find(std::begin(c), std::end(c), v) != std::end(c);
}
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.