Bidirectional_iterator

42_Cursus·2022년 6월 2일
0

STL_Containers

목록 보기
13/13

Bidirectional_iterator

양방향 반복자이다.
임의접근반복자는 vector와 같이, 메모리끼리 붙어있어 인덱스로 접근이 
가능한 곳에 사용되는한편, 양방향 반복자는 레드블랙트리(링크드 리스트)를
기반으로 만들어진 자료구조에 사용된다.
따라서, 임의접근반복자처럼 단지 포인터를 앞으로 옮기는것으로는, 원하는
노드에 접근하지못한다.

양방향 반복자를 이용하여, 최대, 최소값에 접근

// 노드를 타고, 왼쪽 끝으로 이동
node_pointer    minValueNode(node_pointer node)
{
    while (node->left != NULL)
        node = node->left;
    return node;
}

// 노드를 타고, 오른쪽 끝으로 이동
node_pointer    maxValueNode(node_pointer node)
{
    while (node->right != NULL)
        node = node->right;
    return node;
}

증감 연산자


// 전위증감
bidirectional_iterator &operator++(int)
{
	bidirectional tmp = *this;
    _ptr++;
    return tmp;
}

// 후위증감
bidirectional_iterator operator++()
{
	// 오른쪽노드가 존재한다면, 오른쪽으로 한칸이동
    if (!_ptr->right)
    {
        if (_ptr->parent != _ptr)
            _ptr = _ptr->parent;
    }
    return (*this);
}
profile
etudiant_42

0개의 댓글