Dear Boost, I'd like to draw attention to my double_ended library, founded by GSoC 2015. It provides two containers, briefly described below. Given there's interest, I'd like to propose this library later. Documentation: http://erenon.hu/double_ended/ Source: https://github.com/erenon/double_ended Short overview: `devector` is a hybrid of the standard vector and deque containers, as well as the `small_vector` of Boost.Container. It offers cheap (amortized constant time) insertion at both the front and back ends, while also providing the regular features of `std::vector`, in particular the contiguous underlying memory. In contrast to the standard vector, however, `devector` offers greater control over its internals. Like `small_vector`, it can store elements internally without dynamically allocating memory. `batch_deque` is very similar to the standard `deque`, with a slight twist. It lets you specify its segment size: The size of the contiguous memory segments it uses to store its elements. This provides a consistent layout across platforms, and lets you iterate over the segments with batch operations. Thanks, Benedek
On 2/16/2016 11:56 AM, Benedek Thaler wrote:
Dear Boost,
I'd like to draw attention to my double_ended library, founded by GSoC 2015. It provides two containers, briefly described below. Given there's interest, I'd like to propose this library later.
Documentation: http://erenon.hu/double_ended/ Source: https://github.com/erenon/double_ended
Short overview:
`devector` is a hybrid of the standard vector and deque containers, as well as the `small_vector` of Boost.Container. It offers cheap (amortized constant time) insertion at both the front and back ends, while also providing the regular features of `std::vector`, in particular the contiguous underlying memory. In contrast to the standard vector, however, `devector` offers greater control over its internals. Like `small_vector`, it can store elements internally without dynamically allocating memory.
`batch_deque` is very similar to the standard `deque`, with a slight twist. It lets you specify its segment size: The size of the contiguous memory segments it uses to store its elements. This provides a consistent layout across platforms, and lets you iterate over the segments with batch operations.
I'd just like to say I love devector, truly an egg of Columbus.
On Wed, Feb 17, 2016 at 4:33 AM, Michael Marcin
On 2/16/2016 11:56 AM, Benedek Thaler wrote:
I'd just like to say I love devector, truly an egg of Columbus.
Hi Michael, Thanks! Although, I do not take the credit of inventing it. A similar small buffer optimized container was described long ago, called auto_buffer. The double ended nature and the unsafe methods were coined in by Thorsten Ottosen.
On 17-02-2016 17:42, Benedek Thaler wrote:
On Wed, Feb 17, 2016 at 4:33 AM, Michael Marcin
wrote: On 2/16/2016 11:56 AM, Benedek Thaler wrote:
I'd just like to say I love devector, truly an egg of Columbus.
Hi Michael,
Thanks! Although, I do not take the credit of inventing it. A similar small buffer optimized container was described long ago, called auto_buffer.
That would be of Mathew Wilson fame.
The double ended nature and the unsafe methods were coined in by Thorsten Ottosen.
You did all the work and showed it was possible. I think the library is review ready, even though there might be small tweaks to implementation and documentation. Your test suite is also quite impressive. I'm looking forward to the review. -Thorsten
-----Original Message----- From: Boost [mailto:boost-bounces@lists.boost.org] On Behalf Of Benedek Thaler Sent: 16 February 2016 17:56 To: boost@lists.boost.org; Thorsten Ottosen Subject: [boost] Interest in double ended containers
Dear Boost,
I'd like to draw attention to my double_ended library, founded by GSoC 2015. It provides two containers, briefly described below. Given there's interest, I'd like to propose this library later.
Documentation: http://erenon.hu/double_ended/ Source: https://github.com/erenon/double_ended
Short overview:
`devector` is a hybrid of the standard vector and deque containers, as well as the `small_vector` of Boost.Container. It offers cheap (amortized constant time) insertion at both the front and back ends, while also providing the regular features of `std::vector`, in particular the contiguous underlying memory. In contrast to the standard vector, however, `devector` offers greater control over its internals. Like `small_vector`, it can store elements internally without dynamically allocating memory.
`batch_deque` is very similar to the standard `deque`, with a slight twist. It lets you specify its segment size: The size of the contiguous memory segments it uses to store its elements. This provides a consistent layout across platforms, and lets you iterate over the segments with batch operations.
Functions look useful, and thoughtfully designed. Documentation is excellent - only adding an (auto-)index would perfect it. This would at least give a quick index of functions: the synopsis from Doxygen is a bit unintuitive to see how to use at first (and I've made the function link names appear in bold to help to better see the wood from the trees using a custom Cascading style sheet). Contact me off-list if you would like any help to produce an index (not as painful as the rest of the toolchain ;-) Paul --- Paul A. Bristow Prizet Farmhouse Kendal UK LA8 8AB +44 (0) 1539 561830
participants (4)
-
Benedek Thaler
-
Michael Marcin
-
Paul A. Bristow
-
Thorsten Ottosen