Wert in vector<int> vorhanden?
-
Hallo!
Ich habe einen vector<int> und will prüfen, ob z.B. eine 54 in dem vector enthalten ist. Wie kann ich das machen?
Danke!
gogogo
-
Suchen
Die Funktion dazu nennt sich std::find().
-
Danke!

hab ich aber getan und hier war find() nicht dabei:
template<class T, class A = allocator<T> >
class vector {
public:
typedef A allocator_type;
typedef A::size_type size_type;
typedef A::difference_type difference_type;
typedef A::reference reference;
typedef A::const_reference const_reference;
typedef A::value_type value_type;
typedef T0 iterator;
typedef T1 const_iterator;
typedef reverse_iterator<iterator, value_type,
reference, A::pointer, difference_type>
reverse_iterator;
typedef reverse_iterator<const_iterator, value_type,
const_reference, A::const_pointer, difference_type>
const_reverse_iterator;
explicit vector(const A& al = A());
explicit vector(size_type n, const T& v = T(), const A& al = A());
vector(const vector& x);
vector(const_iterator first, const_iterator last,
const A& al = A());
void reserve(size_type n);
size_type capacity() const;
iterator begin();
const_iterator begin() const;
iterator end();
iterator end() const;
reverse_iterator rbegin();
const_reverse_iterator rbegin() const;
reverse_iterator rend();
const_reverse_iterator rend() const;
void resize(size_type n, T x = T());
size_type size() const;
size_type max_size() const;
bool empty() const;
A get_allocator() const;
reference at(size_type pos);
const_reference at(size_type pos) const;
reference operator[](size_type pos);
const_reference operator[](size_type pos);
reference front();
const_reference front() const;
reference back();
const_reference back() const;
void push_back(const T& x);
void pop_back();
void assign(const_iterator first, const_iterator last);
void assign(size_type n, const T& x = T());
iterator insert(iterator it, const T& x = T());
void insert(iterator it, size_type n, const T& x);
void insert(iterator it,
const_iterator first, const_iterator last);
iterator erase(iterator it);
iterator erase(iterator first, iterator last);
void clear();
void swap(vector x);
-
find() ist keine Methode des vector's, sondern eine globale Funktion - zu finden im Header <algorithm> (hat den Vorteil, daß du nur eine Funktion für beliebige Containertypen brauchst (solange sie in der Lage sind, Iteratoren zu liefern) und nicht für jede Klasse eine eigene Funktion schreiben mußt).
-
asoooo!
und wie wende ich das genau an? welche parameter besitzt find()? ich finde in meiner msdn-hilfe leider nicht diese methode/funktion
besten dank dafür!
-
vector<int> v; // vector wird gefüllt... vector<int>::iterator it = find(v.begin(), v.end(), 54); if(it != v.end()) // Wert vorhanden
-
Muß eine Uralt-Version der MSDN sein

find() nimmt drei Parameter: Iterator auf den Anfang der Sequenz, Iterator auf das Ende der Sequenz, zu suchender Wert. (Iteratoren sind eine Verallgemeinerung von Zeigern, die auf einen bestimmten Container zugeschnitten sind). Und der Container liefert dir mit begin() und end() die notwendigen Iteratoren:
vector<int> data; ... vector<int>::iterator pos = find(data.begin(),data.end(),54); if(pos!=data.end())//find() gibt den Ende-Iterator zurück, wenn es nichts gefunden hat cout<<"Gefunden an Index "<<pos-data.begin()<<endl; else cout<<"Nicht gefunden\n";
-
thx again!
muss ich noch was includieren wegen dem find()? Ich bekomme die fehlermeldung:
error C2065: 'find' : nichtdeklarierter Bezeichner
-
oh mein fehler: <algorithm> fehlte!
-
Und anstatt dir die Klassendefinitionen anzusehen, würde ich das hier bevorzugen;) :
http://www.cppreference.com/ -> http://www.cppreference.com/cppalgorithm/find.html
bzw das
http://www.cplusplus.com/reference/ -> http://www.cplusplus.com/reference/algorithm/find.html Sieht schöner aus und ist ausführlicher
-
thx!
Allerdings habe ich ein Problem bei dem hier:vector<int>::iterator it; // iterator to vector element: it = find (myvector.begin(), myvector.end(), 30);wenn ich das so übernehme (und natürlich myvector erzeuge), so kommt immer die Fehlermeldung:
error C2065: 'it' : nichtdeklarierter Bezeichnerden fehler kann ich leider nicht nachvollziehen, weil der bezeichner ja eine zeile vorher festgelegt wird!
-
Seltsam - zeig doch mal etwas mehr Code (am besten ein Minimalprogramm, das durch den Compiler gejagt werden kann).