[review] The review of boost::container::hub starts! April 16 - April 26

Ion Gaztañaga via Boost <[email protected]>
Newsgroups gmane.comp.lib.boost.devel
Message-ID <[email protected]>
Dear users and members of Boost,

I'm proud to announce that the formal review of Joaquín M López Muñoz's 
boost::container::hub container, for inclusion in the Boost.Container 
library, starts today ( in my timezone ;-) ), April 16, and runs through 
April 26.

It may be downloaded from

https://github.com/joaquintides/hub

and the documentation may be found here:

https://github.com/joaquintides/hub/blob/develop/README.md

Anyone is welcome to post a review and/or take part in subsequent 
discussions (see below for review guidelines).

Introduction
------------

boost::container::hub is a sequence container with O(1) insertion and 
erasure and element stability: pointers/iterators to an element remain 
valid as long as the element is not erased.

boost::container::hub is very similar but not entirely equivalent to 
C++26 std::hive (hence the different naming, consult the section 
"Comparison with std::hive", for details):

https://github.com/joaquintides/hub/blob/develop/README.md#comparison-with-stdhive

boost::container::hub has excellent performance, you can see some 
benchmarks here:

https://github.com/joaquintides/hub/blob/develop/README.md#performance

Basic example:

#include <boost/container/hub.hpp>
#include <cassert>

int main()
{
   boost::container::hub<int> h;

   // Insert some elements and keep an iterator to one of them
   for(int i = 0; i < 100; ++i) h.insert(i);
   auto it = h.insert(100);
   for(int i = 101; i < 200; ++i) h.insert(i);

   // Erase some of the elements
   erase_if(h, [](int x) { return x % 2 != 0;});
   assert(*it = 100); // iterator still valid

   // Insert many more elements
   for(int i = 200; i < 10000; ++i) h.insert(i);
   assert(*it = 100); // iterator still valid
}

An important tradeoff when using boost::container::hub is the fact that 
the user can't control the position where a new element will be 
inserted: boost::container::hub reuses the memory addresses of 
previously erased elements to maximize performance and keep the data 
structure as compact as possible.

The primary use case for boost::container::hub is in high-performance 
scenarios where elements are created and destroyed frequently, insertion 
order is not relevant and pointer/iterator stability is required: game 
entity systems, particle simulation, HFT...

For more information, see the Tutorial section:

https://github.com/joaquintides/hub/blob/develop/README.md#tutorial

Review guidelines
-----------------

Please provide in your review whatever information you think is
valuable to understand your final choice of ACCEPT or REJECT including
Fit as a Boost component. Please be explicit about your decision.

Some other questions you might want to consider answering:

   - What is your evaluation of the design?
   - What is your evaluation of the implementation?
   - What is your evaluation of the documentation? (Note that, if 
accepted, final documentation will be included in Boost.Container docs, 
so please review the content, not the format)
   - What is your evaluation of its potential usefulness?
   - Did you try to use the container? With which compiler(s)? Did you
     have any problems?
   - How much effort did you put into your evaluation? A glance? A quick
     reading? In-depth study?
   - Are you knowledgeable about the problem domain?

More information about the Boost Formal Review Process can be found 
here: http://www.boost.org/community/reviews.html

Kind regards,

Ion Gaztañaga, Review manager
_______________________________________________
Boost mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://lists.boost.org/mailman3/lists/boost.lists.boost.org/
Archived at: https://lists.boost.org/archives/list/[email protected]/message/6ER3ZA4VMVKB57DDEXKO26UVYBP7I3QP/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.