Gibt es einen großen Unterschied zwischen const_iterator
und iterator
Implementierungen für std :: list außer operator*
und operator->
. Unten sehen Sie mein Beispiel für Hausaufgaben ohne Vorlagen, um das Wesentliche zu zeigen. Soweit ich weiß, kopieren Sie einfach die anderen Methoden für diese Klassen, wie CTOR, operator==
, operator!=
, operator++
, operator++(int)
, operator--
, operator--(int)
.const_iterator vs iterator für std :: list
class iterator
{
private:
Node* m_node;
public:
iterator(Node* node)
: m_node(node)
{
}
int& operator*()
{
return m_node->value;
}
Node* operator->()
{
return m_node;
}
....
}
Jetzt const iterator Implementierung
class const_iterator
{
private:
Node* m_node;
public:
const_iterator(Node* node)
: m_node(node)
{
}
int operator*() const
{
return m_node->value;
}
const Node* operator->() const
{
return m_node;
}
......
}
Wenn dies der wesentliche Unterschied ist, dann sollten wir die Vervielfältigung behandeln, nicht wahr?
Ist Ihr Iterator in const_iterator konvertierbar? –
@RichardCritten ja, ich denke es sollte sein, aber ich habe das nicht geschrieben. Es sollte 'operator const_iterator' für' iterator' geben? – Narek
Ich habe 'iterator' in einigen Implementierungen von' const_iterator' abgeleitet. –