See intrusive::SplitListSet for a brief description of the split-list algorithm.
Template parameters:
- - \p GC - Garbage collector used
+ - \p GC - Garbage collector used like \p cds::gc::HP or \p cds::gc::DHP
- \p Key - key type of an item stored in the map. It should be copy-constructible
- \p Value - value type stored in the map
- \p Traits - map traits, default is \p split_list::traits. Instead of declaring \p %split_list::traits -based
You may use the modern option-based declaration instead of classic type-traits-based one:
\code
- typedef cc:SplitListMap<
+ typedef cc::SplitListMap<
cs::gc::DHP // GC used
,int // key type
,std::string // value type
You may use the modern option-based declaration instead of classic traits-based one:
\code
- typedef cc:SplitListMap<
+ typedef cc::SplitListMap<
cds::urcu::gc<cds::urcu::general_buffered<> > // RCU type
,int // key type
,std::string // value type
You may use the modern option-based declaration instead of classic traits-based one:
\code
- typedef cc:SplitListSet<
+ typedef cc::SplitListSet<
cs::gc::DHP // GC used
,foo // type of data stored
,cc::split_list::make_traits< // metafunction to build split-list traits
You may use the modern option-based declaration instead of classic type-traits-based one:
\code
- typedef cc:SplitListSet<
+ typedef cc::SplitListSet<
cds::urcu::gc<cds::urcu::general_buffered<> > // RCU type used
,foo // type of data stored
,cc::split_list::make_traits< // metafunction to build split-list traits
#include <cds/details/allocator.h>
#include <cds/algo/int_algo.h>
#include <cds/algo/bitop.h>
+#include <cds/opt/hash.h>
namespace cds { namespace intrusive {