Boost logo

Boost :

Subject: Re: [boost] [container] [flat_map] Sub-optimal behavior when utilized with std::less<>
From: Andrey Semashev (andrey.semashev_at_[hidden])
Date: 2018-06-15 11:50:25


On 06/15/18 13:22, Viktor Sehr via Boost wrote:
> It seems to me that neither boost::flat_map nor boost:flat_set with a
> custom comparator such as std::less<> behaves like std::set/std::map.
> This results in unnecessary allocation, in difference from std::map/set
> when used with a std::string as key for example
>
> Example:
> // Please note that I pretend that "dummy" is large enough to make the
> std::string utilize the heap.
> auto set = std::set<std::string, std::less<> >{};
> auto n = set.count("dummy"); // No conversion from const char* to
> std::string
>
> auto flatset = boost::container::flat_set<std::string, std::less<> >{};
> auto n = flatset.count("dummy"); // const char* is converted to a
> std::string before comparison, thus resulting in an unnecessary allocation.
>
> Is this a known issue intended to be resolved?

Support for templated lookup methods have been added not long ago.

https://github.com/boostorg/container/issues/69


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk