vector::begin() liefer nur const_iterator
-
Hallo, ich habe eine Frage: ich muss für die uni den gaußalgorithmus implementieren. um als pivot-element immer das betragsmäßig größte zu wählen, soll ich eine methode getMaxElement() haben, die einen iterator auf das betragsmäßig größte element einer zeile zurückliefert. meine klasse zeile enthält einen vektor _data mit den zeileneinträgen. in meiner methode
template<class t> typename vector<t>::iterator zeile<t>::getMaxElement()const { typename vector<t>::iterator it=this->_data.begin(); for(typename vector<t>::iterator i = this->_data.begin(); i!=this->_data.end(); i++) { if(*i>*it) { it=i; } } return it; }
will ich eigentlich die elemente durchlaufen. wenn ich das kompilieren will, kriege ich eine fehlermeldung, der compiler könne nicht von const_iterator in iterator konvertieren. Laut cplusplusreference sollte .begin() aber eigentlich eh einen "normalen" iterator zurückliefern. woran kann das liegen? vielen dank schon mal
PS: was auch merkwürdig ist, ist, dass meine IDE (Code::Blocks) bei dem Menü was aufklappt, wenn ich _data.b... eintippe, wo die ganzen vorschläge drinstehen, auch nur begin(): const_iterator vorgeschlagen wird, dass dafür gleich doppelt
-
getMaxElement ist const => this ist const => _data ist const => begin liefert const itarator.
Benutze auto oder const_iterator.
-
Es gibt übrigens auch std::max_element.
-
Vielen Dank, manni66, jetzt läufts