, undefined, 0 undefined - .
, , , , segfault. , map . node .
, map node (, node ). . , operator --() eg. , - , , , , node ( , ):
template<typename U, typename V>
typename map<U,V>::iterator &map<U,V>::iterator::operator --()
{
if ( node_ != nullptr )
{
if ( node_->leftChild_ != nullptr )
{
for ( node_ = node_->leftChild_; node_->rightChild_ != nullptr; node_ = node_->rightChild_ );
}
else
{
node *n;
do
{
n = node_;
node_ = node->parent_;
assert( node_ != nullptr );
} while ( n == node_->leftChild_ );
}
}
else
{
assert( container_->root_ != nullptr );
for ( node_ = container_->root_; node_->rightChild_ != nullptr; node = node->rightChild_ );
}
return *this;
}
, node, node node, , , . container_ , iterator, . ( , ++ 11 " " , , . . MINOR UPDATE: , .)
, end() "" . , operator *() :
template<typename U, typename V>
typename map<U,V>::reference map<U,V>::iterator::operator *() const
{
assert( hasSuccessor(node_) );
return *node_;
}
, . hasSuccessor? , , , node_ . , .. . - O (1), O (log N), Θ (1) . , , , , , " " - node. , . , node, "" , . , "" , , segfault, , .
, , , , -135, - "" 8-9- . map , , . operator [], , . , :
- , - ,
int, map, , int{}, . new. memset node . , .- , , "" , . , , , , . ,
memset , .