mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-15 23:20:36 +01:00
Core/Utils: Added .contains member function to FlatSet
This commit is contained in:
@@ -39,11 +39,17 @@ public:
|
||||
auto end() { return _storage.end(); }
|
||||
auto end() const { return _storage.end(); }
|
||||
|
||||
bool contains(Key const& value) const
|
||||
{
|
||||
return std::binary_search(this->begin(), this->end(), value, Compare());
|
||||
}
|
||||
|
||||
auto find(Key const& value) const
|
||||
{
|
||||
auto compare = Compare();
|
||||
auto end = this->end();
|
||||
auto itr = std::lower_bound(this->begin(), end, value, Compare());
|
||||
if (itr != end && Compare()(value, *itr))
|
||||
auto itr = std::lower_bound(this->begin(), end, value, compare);
|
||||
if (itr != end && compare(value, *itr))
|
||||
itr = end;
|
||||
|
||||
return itr;
|
||||
@@ -51,9 +57,10 @@ public:
|
||||
|
||||
auto find(Key const& value)
|
||||
{
|
||||
auto compare = Compare();
|
||||
auto end = this->end();
|
||||
auto itr = std::lower_bound(this->begin(), end, value, Compare());
|
||||
if (itr != end && Compare()(value, *itr))
|
||||
auto itr = std::lower_bound(this->begin(), end, value, compare);
|
||||
if (itr != end && compare(value, *itr))
|
||||
itr = end;
|
||||
|
||||
return itr;
|
||||
@@ -63,9 +70,10 @@ public:
|
||||
std::pair<iterator, bool> emplace(Args&&... args)
|
||||
{
|
||||
Key newElement(std::forward<Args>(args)...);
|
||||
auto compare = Compare();
|
||||
auto end = this->end();
|
||||
auto itr = std::lower_bound(this->begin(), end, newElement, Compare());
|
||||
if (itr != end && !Compare()(newElement, *itr))
|
||||
auto itr = std::lower_bound(this->begin(), end, newElement, compare);
|
||||
if (itr != end && !compare(newElement, *itr))
|
||||
return { itr, false };
|
||||
|
||||
return { _storage.emplace(itr, std::move(newElement)), true };
|
||||
@@ -88,15 +96,8 @@ public:
|
||||
|
||||
void shrink_to_fit() { _storage.shrink_to_fit(); }
|
||||
|
||||
friend bool operator==(FlatSet const& left, FlatSet const& right)
|
||||
{
|
||||
return left._storage == right._storage;
|
||||
}
|
||||
|
||||
friend bool operator!=(FlatSet const& left, FlatSet const& right)
|
||||
{
|
||||
return !(left == right);
|
||||
}
|
||||
friend std::strong_ordering operator<=>(FlatSet const& left, FlatSet const& right) = default;
|
||||
friend bool operator==(FlatSet const& left, FlatSet const& right) = default;
|
||||
|
||||
private:
|
||||
KeyContainer _storage;
|
||||
|
||||
Reference in New Issue
Block a user