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
On Behalf Of Robert Ramey via Boost Sent: Thursday, May 31, 2018 4:48 PM To: boost@lists.boost.org Cc: Robert Ramey 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
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: http://lists.boost.org/mailman/listinfo.cgi/boost
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost