dune-assembler 2.12
Loading...
Searching...
No Matches
flatset.hh
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file AUTHORS.md
2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception OR LGPL-3.0-or-later
3
4#ifndef DUNE_ASSEMBLER_BACKENDS_FLATSET_HH
5#define DUNE_ASSEMBLER_BACKENDS_FLATSET_HH
6
7#include <algorithm>
8#include <vector>
9
10namespace Dune::Assembler {
11
12template <class T>
14 : public std::vector<T>
15{
16 using Base = std::vector<T>;
17
18public:
19 using value_type = typename Base::value_type;
20
21public:
22 using Base::Base;
23 using Base::begin;
24 using Base::end;
25
26 void insert (const value_type& value)
27 {
28 auto it = std::lower_bound(begin(), end(), value);
29 if ((it == end() or (*it != value)))
30 Base::insert(it, value);
31 }
32
33 [[nodiscard]] bool contains (const value_type& value) const
34 {
35 return std::binary_search(begin(), end(), value);
36 }
37};
38
39} // end namespace Dune::Assembler
40
41#endif // DUNE_ASSEMBLER_BACKENDS_FLATSET_HH
Definition localboundaryintersectionmatrixassembler.hh:9
iterator end()
iterator begin()
Definition flatset.hh:15
void insert(const value_type &value)
Definition flatset.hh:26
typename Base::value_type value_type
Definition flatset.hh:19
bool contains(const value_type &value) const
Definition flatset.hh:33
T begin(T... args)
T binary_search(T... args)
T end(T... args)
T insert(T... args)
T lower_bound(T... args)