Slide 1

Slide 1 text

prev_ next_ value - head_index_ptr_for_hash 1 boost::multi_index version >= 1.56.0 internal structure focused on the element that is needed to iteration only

Slide 2

Slide 2 text

prev_ next_ value - head_index_ptr_for_hash 1 2

Slide 3

Slide 3 text

prev_ next_ value - head_index_ptr_for_hash 1 2 2

Slide 4

Slide 4 text

prev_ next_ value - head_index_ptr_for_hash 1 2 2 2 prior_ of the second from the left points to the right most element in the same value range next_ of the second from the right points to the left most element in the same value range

Slide 5

Slide 5 text

prev_ next_ value - head_index_ptr_for_hash 1 2 2 2 2 prior_ of the second from the left points to the right most element in the same value range next_ of the second from the right points to the left most element in the same value range

Slide 6

Slide 6 text

prev_ next_ value - head_index_ptr_for_hash 1 2 2 2 2 2 prior_ of the second from the left points to the right most element in the same value range next_ of the second from the right points to the left most element in the same value range

Slide 7

Slide 7 text

prev_ next_ value - head_index_ptr_for_hash 1 3 2 2 2 2 2

Slide 8

Slide 8 text

prev_ next_ value - head_index_ptr_for_hash 1 3 2 2 2 2 2 iteration algorithm crt end trace { A } A B C D E F G get_prev_ptr returns B B is NOT in trace, crt moves to B

Slide 9

Slide 9 text

prev_ next_ value - head_index_ptr_for_hash 1 3 2 2 2 2 2 iteration algorithm crt end trace { A, B } A B C D E F G get_prev_ptr returns C C is NOT in trace, crt moves to C

Slide 10

Slide 10 text

prev_ next_ value - head_index_ptr_for_hash 1 3 2 2 2 2 2 iteration algorithm crt end trace { A, B, C } A B C D E F G get_prev_ptr returns D D is NOT in trace, crt moves to D

Slide 11

Slide 11 text

prev_ next_ value - head_index_ptr_for_hash 1 3 2 2 2 2 2 iteration algorithm crt end trace { A, B, C, D } A B C D E F G get_prev_ptr returns E E is NOT in trace, crt moves to E

Slide 12

Slide 12 text

prev_ next_ value - head_index_ptr_for_hash 1 3 2 2 2 2 2 iteration algorithm crt end trace { A, B, C, D, E } A B C D E F G get_prev_ptr returns B B is in trace, crt moves to F by B's get_prev_ptr and C's get_next_ptr. Clear trace.

Slide 13

Slide 13 text

prev_ next_ value - head_index_ptr_for_hash 1 3 2 2 2 2 2 iteration algorithm crt end trace {} A B C D E F G get_prev_ptr returns B B is in trace, crt moves to F by B's get_prev_ptr and C's get_next_ptr. Clear trace.

Slide 14

Slide 14 text

prev_ next_ value - head_index_ptr_for_hash 1 3 2 2 2 2 2 iteration algorithm end trace { F } A B C D E F G crt get_prev_ptr returns G G is NOT in trace, crt moves to G

Slide 15

Slide 15 text

prev_ next_ value - head_index_ptr_for_hash 1 3 2 2 2 2 2 iteration algorithm end trace { F, G } A B C D E F G crt get_prev_ptr returns end. if crt equals to end, stop iteration.