From ee75fe6330d14401b06d74648b29afc161943d54 Mon Sep 17 00:00:00 2001 From: Alexander Karatarakis Date: Wed, 29 Mar 2017 17:32:22 -0700 Subject: [PATCH] Add more functions to ImmutableSortedVector --- toolsrc/include/ImmutableSortedVector.h | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/toolsrc/include/ImmutableSortedVector.h b/toolsrc/include/ImmutableSortedVector.h index 681f9fd4d..0756068eb 100644 --- a/toolsrc/include/ImmutableSortedVector.h +++ b/toolsrc/include/ImmutableSortedVector.h @@ -9,6 +9,8 @@ namespace vcpkg template class ImmutableSortedVector { + typedef typename std::vector::size_type size_type; + public: static ImmutableSortedVector create(std::vector vector) { @@ -22,6 +24,19 @@ namespace vcpkg return out; } + template + static ImmutableSortedVector create(std::vector vector, Compare comp) + { + ImmutableSortedVector out; + out.delegate = std::move(vector); + if (!std::is_sorted(out.delegate.cbegin(), out.delegate.cend(), comp)) + { + std::sort(out.delegate.begin(), out.delegate.end(), comp); + } + + return out; + } + typename std::vector::const_iterator begin() const { return this->delegate.cbegin(); @@ -42,6 +57,16 @@ namespace vcpkg return this->delegate.cend(); } + bool empty() const + { + return this->delegate.empty(); + } + + size_type size() const + { + return this->delegate.size(); + } + private: std::vector delegate; };