From 7d9d0878de2663a7f0109edad37f2a737c800571 Mon Sep 17 00:00:00 2001 From: DennisOSRM Date: Sun, 3 Feb 2013 14:59:10 +0100 Subject: [PATCH] Adding templated utility functions for repeated operations on containers --- Util/ContainerUtils.h | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 Util/ContainerUtils.h diff --git a/Util/ContainerUtils.h b/Util/ContainerUtils.h new file mode 100644 index 000000000..215e9885c --- /dev/null +++ b/Util/ContainerUtils.h @@ -0,0 +1,34 @@ +/* + * ContainerUtils.h + * + * Created on: 02.02.2013 + * Author: dennis + */ + +#ifndef CONTAINERUTILS_H_ +#define CONTAINERUTILS_H_ + +#include +#include + +template +inline void sort_unique_resize(std::vector & vector) { + std::sort(vector.begin(), vector.end()); + unsigned number_of_unique_elements = std::unique(vector.begin(), vector.end()) - vector.begin(); + vector.resize(number_of_unique_elements); +} + +template +inline void sort_unique_resize_shrink_vector(std::vector & vector) { + sort_unique_resize(vector); + std::vector().swap(vector); +} + +template +inline void remove_consecutive_duplicates_from_vector(std::vector & vector) { + unsigned number_of_unique_elements = std::unique(vector.begin(), vector.end()) - vector.begin(); + vector.resize(number_of_unique_elements); +} + + +#endif /* CONTAINERUTILS_H_ */