X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fstdalgo.h;h=dd97e8efa2e1447900000fdcbb1d7322c3a7e5a3;hb=e94b673532f7833aaa4789f834e61d68e0b4fc56;hp=d69f50bb244afd71537ac750c54d1c1dd4980a6f;hpb=87b1461e2a4710a38b32186c2582da9fe9bb3804;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/stdalgo.h b/include/stdalgo.h index d69f50bb2..dd97e8efa 100644 --- a/include/stdalgo.h +++ b/include/stdalgo.h @@ -1,7 +1,8 @@ /* * InspIRCd -- Internet Relay Chat Daemon * - * Copyright (C) 2014 Attila Molnar + * Copyright (C) 2018, 2020-2021 Sadie Powell + * Copyright (C) 2014, 2016, 2018 Attila Molnar * * This file is part of InspIRCd. InspIRCd is free software: you can * redistribute it and/or modify it under the terms of the GNU General Public @@ -27,10 +28,10 @@ namespace stdalgo * Erase a single element from a vector by overwriting it with a copy of the last element, * which is then removed. This, in contrast to vector::erase(), does not result in all * elements after the erased element being moved. + * Returns nothing, but all iterators, references and pointers to the erased element and the + * last element are invalidated * @param vect Vector to remove the element from * @param it Iterator to the element to remove - * @return Nothing, but all iterators, references and pointers to the erased element and the - * last element are invalidated */ template inline void swaperase(typename std::vector& vect, const typename std::vector::iterator& it) @@ -181,6 +182,17 @@ namespace stdalgo std::for_each(cont.begin(), cont.end(), defaultdeleter()); } + /** Deletes a object and zeroes the memory location that pointed to it. + * @param pr A reference to the pointer that contains the object to delete. + */ + template + void delete_zero(T*& pr) + { + T* p = pr; + pr = NULL; + delete p; + } + /** * Remove an element from a container * @param cont Container to remove the element from