Boost logo

Boost :

Subject: Re: [boost] [Algorithm] contains(v, 1)
From: Robert Ramey (ramey_at_[hidden])
Date: 2018-06-02 19:29:06

On 6/2/18 2:04 AM, mike via Boost wrote:
> Hi
> If the argument "can't you write it yourself" is a valid reason not to
> put something in a library then that explains, why c++ is so complicated
> to use and teach.

My point exactly !
> Seriously though: Even for simple things like this, the usual advantages of
> using a library apply (although maybe to a lesser degree):

To me, the advantages of including something like this in the standard
library out weigh the disadvantages.
> - They are (usually) being tested by more people and in case of boost
> are also most likely of better quality than my own (corner cases, performance ... )
> - They reduce the amount of code in my own project (fewer things to test,
> fewer things to refactor, fewer things to code review ...)
> - They are easier to reuse in different projects

I don't dispute the above. But in cases like this, these advantages
don't out weigh the costs:

- just looking for the component in the library is not free.
- another dependency
- verifying that the library component is actually the same as the one
one needs. This requires study of the documentation (if there is any).
- adding one more component to the standard, means that the whole
standard libary is larger. So searching cost of through it, avoiding
conflicts, etc. increases even for users which don't use this component.

Does the invention of the "salad shooter" make the world a better place
when it already has the kitchen knife?

Robert Ramey

> Best
> Mike
>> -----Original Message-----
>> From: Boost <boost-bounces_at_[hidden]> On Behalf Of Robert Ramey
>> via Boost
>> Sent: Thursday, May 31, 2018 4:48 PM
>> To: boost_at_[hidden]
>> Cc: Robert Ramey <ramey_at_[hidden]>
>> Subject: Re: [boost] [Algorithm] contains(v, 1)
>> On 5/31/18 5:58 AM, Olaf van der Spek via Boost wrote:
>>> On Thu, May 31, 2018 at 2:50 PM, Robert Ramey via Boost
>>> <boost_at_[hidden]> wrote:
>>>> On 5/31/18 3:14 AM, Olaf van der Spek via Boost wrote:
>>>>> Hi,
>>>>> vector<int> v;
>>>>> contains(v, 1);
>>>>> This doesn't work as contains expects two ranges (AFAIK).
>>>>> Is there some other function that's usable for this purpose?
>>>>> Should contains support a value for argument 2?
>>>>> Gr,
>>>> Hmmm- can't you just make your own? Something like ...
>>>> #include <algorithm>
>>>> template<typename V>
>>>> bool contains(const V & v, const typename V::value_type & t){
>>>> return v.end != find(v.begin(), v.end(), t);
>>>> }
>>>> I'm pretty sure it would work on strings as well.
>>> Of course I could, but I'd rather not..
>> Why not? This is a sincere question. If libraries contain lots of
>> stuff like this, it makes the libraries harder to understand. I prefer
>> a set of simple, transparent tools which are easily composed. I see we
>> disagree on this, I'm curious what your argument is.
>> Robert Ramey
>> _______________________________________________
>> Unsubscribe & other changes:
> _______________________________________________
> Unsubscribe & other changes:

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