add is_unordered_set concept

This commit is contained in:
chatlanin
2023-08-20 10:07:06 +03:00
parent 9805cdf6cf
commit c722357baf
5 changed files with 31 additions and 4 deletions

View File

@@ -5,6 +5,7 @@
#include <list>
#include <map>
#include <set>
#include <unordered_set>
#include <unordered_map>
#include <forward_list>
@@ -22,6 +23,9 @@ namespace hack::concepts
template<typename T>
concept is_set = std::same_as<T, std::set<typename T::key_type, typename T::key_compare, typename T::allocator_type>>;
template<typename T>
concept is_unordered_set = std::same_as<T, std::unordered_set<typename T::key_type>>;
template<typename T>
concept is_forward_list = std::same_as<T, std::forward_list<typename T::value_type>>;
@@ -32,7 +36,7 @@ namespace hack::concepts
concept is_sequence_container = std::same_as<T, std::vector<typename T::value_type>> || std::same_as<T, std::list<typename T::value_type>> || (std::is_array_v<T> && N > 0);
template<typename T>
concept is_associative_container = is_map<T> || is_tuple<T> || is_set<T>;
concept is_associative_container = is_map<T> || is_tuple<T> || is_set<T> || is_unordered_set<T>;
template<typename T>
@@ -41,6 +45,7 @@ namespace hack::concepts
is_map<T> ||
is_tuple<T> ||
is_set<T> ||
is_unordered_set<T> ||
is_forward_list<T> ||
std::is_array<T>() ||
is_string<T>), bool>() == true;

View File

@@ -99,6 +99,14 @@ namespace hack
std::cout << " }" << (count != 0 ? devider : "");
}
template<concepts::is_unordered_set T>
static void print_t(const T& data)
{
std::cout << "{ ";
std::copy(data.cbegin(), data.cend(), iterators::sequence_ostream_iterator<typename T::value_type>(data.size(), std::cout));
std::cout << " }" << (count != 0 ? devider : "");
}
template<concepts::is_forward_list T>
static void print_t(const T& data)
{