Adding templated utility functions for repeated operations on containers

This commit is contained in:
DennisOSRM 2013-02-03 14:59:10 +01:00
parent 26729ca482
commit 7d9d0878de

34
Util/ContainerUtils.h Normal file
View File

@ -0,0 +1,34 @@
/*
* ContainerUtils.h
*
* Created on: 02.02.2013
* Author: dennis
*/
#ifndef CONTAINERUTILS_H_
#define CONTAINERUTILS_H_
#include <algorithm>
#include <vector>
template<typename T>
inline void sort_unique_resize(std::vector<T> & 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<typename T>
inline void sort_unique_resize_shrink_vector(std::vector<T> & vector) {
sort_unique_resize(vector);
std::vector<T>().swap(vector);
}
template<typename T>
inline void remove_consecutive_duplicates_from_vector(std::vector<T> & vector) {
unsigned number_of_unique_elements = std::unique(vector.begin(), vector.end()) - vector.begin();
vector.resize(number_of_unique_elements);
}
#endif /* CONTAINERUTILS_H_ */