X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fstdalgo.h;h=3e00a4cdcd93030cdb2d3c56e1b48dac24599261;hb=d5c3c15fad07d34cd7d8089731f01c3cb14c319f;hp=afbd763fb259eca74f9543afdf75f68b17361005;hpb=f71e6bf9cb41811f18864f5d4eecb26e29d03f25;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/stdalgo.h b/include/stdalgo.h index afbd763fb..3e00a4cdc 100644 --- a/include/stdalgo.h +++ b/include/stdalgo.h @@ -94,4 +94,34 @@ namespace stdalgo { std::for_each(cont.begin(), cont.end(), defaultdeleter()); } + + /** + * Remove an element from a container + * @param cont Container to remove the element from + * @param val Value of the element to look for and remove + * @return True if the element was found and removed, false otherwise + */ + template class Cont, typename T, typename Alloc> + inline bool erase(Cont& cont, const T& val) + { + const typename Cont::iterator it = std::find(cont.begin(), cont.end(), val); + if (it != cont.end()) + { + cont.erase(it); + return true; + } + return false; + } + + /** + * Check if an element with the given value is in a container. Equivalent to (std::find(cont.begin(), cont.end(), val) != cont.end()). + * @param cont Container to find the element in + * @param val Value of the element to look for + * @return True if the element was found in the container, false otherwise + */ + template class Cont, typename T, typename Alloc> + inline bool isin(const Cont& cont, const T& val) + { + return (std::find(cont.begin(), cont.end(), val) != cont.end()); + } }