2016-07-09 5 views
2

In C genannt ++ 11 std::vector::erase wird als erstes Argument const_iterator (ältere mit Iterator war):Lösch bekommt const_iterator aber mit Iterator (nicht konstante)

http://www.cplusplus.com/reference/vector/vector/erase/

Aber wie Sie sehen in kann das Beispiel verwendet es mit nicht cbegin. Stattdessen verwendet es mit begin. Gibt es eine implizite Konvertierung zwischen const_iterator und iterator?

+0

Es gibt eine implizite Konvertierung von "Iterator" zu "Const_iterator", aber im Allgemeinen nicht umgekehrt. –

+0

Moral der Geschichte: Verwenden Sie zuverlässige Referenzdokumentation. –

Antwort

3

Die Anforderung an containers ist, dass iterator Typ implizit in const_iterator konvertierbar sein muss.

See: http://en.cppreference.com/w/cpp/concept/Container

Also, so etwas wie wird unten arbeiten:

std::vector<int> v; 
..... 
std::vector<int>::const_iterator cit = v.begin(); 
Verwandte Themen