template<typename T, typename B, typename C = I_P_List_null_counter, typename I = I_P_List_no_push_back<T>>
class I_P_List< T, B, C, I >
Intrusive parameterized list.
Unlike I_List does not require its elements to be descendant of ilink class and therefore allows them to participate in several such lists simultaneously.
Unlike List is doubly-linked list and thus supports efficient deletion of element without iterator.
- Template Parameters
-
T | Type of elements which will belong to list. |
B | Class which via its methods specifies which members of T should be used for participating in this list. Here is typical layout of such class: |
struct B { static inline T **next_ptr(T *el) { return &el->next; } static inline T ***prev_ptr(T *el) { return &el->prev; } };
- Template Parameters
-
C | Policy class specifying how counting of elements in the list should be done. Instance of this class is also used as a place where information about number of list elements is stored. |
- See also
- I_P_List_null_counter, I_P_List_counter
- Template Parameters
-
I | Policy class specifying whether I_P_List should support efficient push_back() operation. Instance of this class is used as place where we store information to support this operation. |
- See also
- I_P_List_no_push_back, I_P_List_fast_push_back.