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.

Boost list run by bdawes at, gregod at, cpdaniel at, john at