Skip to content
Snippets Groups Projects
Commit 381be737 authored by Tobias Leibner's avatar Tobias Leibner
Browse files

[vector_less] add structs to be used as comparision in std::map and the like

parent 92c57fa7
No related branches found
No related tags found
No related merge requests found
[supermodule]
remote = git@github.com:dune-community/dune-xt-super.git
remote = https://github.com/dune-community/dune-xt-super.git
status = 1a3bcab04b011a5d6e44f9983cae6ff89fa695e8 bin (heads/master)
5147d438044a772a07fd89ff142d861cfc82212e config.opts (heads/master-13-g5147d43)
5147d438044a772a07fd89ff142d861cfc82212e config.opts (5147d43)
8f2c5aba441417bf2c42f22272f538c68a89cc4a dune-alugrid (remotes/origin/releases/2.5)
707acf201d5a754c80f87cc4d71aa36bf29a6e3f dune-common (v2.5.1-9-g707acf20)
e6350271b8d014adab51467a35b6ad8ef48212a0 dune-geometry (v2.5.1-6-ge635027)
......@@ -11,14 +11,14 @@ status = 1a3bcab04b011a5d6e44f9983cae6ff89fa695e8 bin (heads/master)
0d757d65e5d57134a7ecf304e35d063f4ccc7116 dune-localfunctions (v2.5.1rc1)
8a69fc68165780921bbba77da338b6932daf983c dune-pybindxi (v2.2.1-16-g8a69fc6)
741e4f8e53bdd3e1b6e19d84eb22b6e3dc48526c dune-python (remotes/origin/releases/2.5)
26cc8cb4161a3a51002ab2a81b8c81d2c951ee79 dune-testtools (26cc8cb)
26cc8cb4161a3a51002ab2a81b8c81d2c951ee79 dune-testtools (remotes/origin/dune_xt)
8fe883e99c58c9f0c2f92457d546a0ac9f5a9bf9 dune-uggrid (v2.5.2-1-g8fe883e9)
+1cf2465b3ce943e58771d4389cffb245d042bfa6 dune-xt-common (heads/vcsetup_bump)
+fae5661849439945015298af0e791e5012722679 dune-xt-data (heads/compatible_with_2.6_clang-formatted)
+08a67a827a02a83463691370d5d1a186a18dd43b dune-xt-functions (heads/clang_format_6)
+5ed09938e46a7e5b42570bb285042fa9356ce0ce dune-xt-grid (heads/compatible_with_2.6_clang-formatted)
+85b23137dc189ab6edc078fd68969c403a1b73b3 dune-xt-la (heads/compatible_with_2.6_clang-formatted)
09d0378f616b94d68bcdd9fc6114813181849ec0 scripts (remotes/origin/HEAD)
+92c57fa717f1bb48bdf08de085bf4cb6beee21cb dune-xt-common (heads/dailywork_tleibner)
+d3a5f3e20fe36d74c4bcce82a7655af4006cedbc dune-xt-data (heads/master)
+aea4ef43bb0177466be2ec3cb56e3f4f5ced2c25 dune-xt-functions (heads/master)
+8a51b63c953466077824b3ed1177f09b2e555257 dune-xt-grid (heads/master)
+a7b535e1289c88579c4d7e0a0b24af5415e6ba23 dune-xt-la (heads/master)
09d0378f616b94d68bcdd9fc6114813181849ec0 scripts (heads/master)
commit = a211a5c7ba4c103fc0da57add321c5bdef7b07b5
[submodule.bin]
......@@ -77,7 +77,7 @@ status =
commit = 741e4f8e53bdd3e1b6e19d84eb22b6e3dc48526c
[submodule.dune-testtools]
remote = https://github.com/dune-mirrors/dune-testtools.git
remote = git@github.com:dune-community/dune-testtools.git
status =
commit = 26cc8cb4161a3a51002ab2a81b8c81d2c951ee79
......@@ -89,30 +89,30 @@ commit = 8fe883e99c58c9f0c2f92457d546a0ac9f5a9bf9
[submodule.dune-xt-common]
remote = git@github.com:dune-community/dune-xt-common.git
status = c0b1735fab0ecbd4bb4f1eaa27cb65fe813e98f0 .vcsetup (heads/master)
commit = 1cf2465b3ce943e58771d4389cffb245d042bfa6
commit = 92c57fa717f1bb48bdf08de085bf4cb6beee21cb
[submodule.dune-xt-data]
remote = https://github.com/dune-community/dune-xt-data
remote = git@github.com:dune-community/dune-xt-data
status = c0b1735fab0ecbd4bb4f1eaa27cb65fe813e98f0 .vcsetup (heads/master)
commit = fae5661849439945015298af0e791e5012722679
commit = d3a5f3e20fe36d74c4bcce82a7655af4006cedbc
[submodule.dune-xt-functions]
remote = git@github.com:dune-community/dune-xt-functions.git
status = c0b1735fab0ecbd4bb4f1eaa27cb65fe813e98f0 .vcsetup (heads/master)
commit = 08a67a827a02a83463691370d5d1a186a18dd43b
commit = aea4ef43bb0177466be2ec3cb56e3f4f5ced2c25
[submodule.dune-xt-grid]
remote = git@github.com:dune-community/dune-xt-grid.git
status = c0b1735fab0ecbd4bb4f1eaa27cb65fe813e98f0 .vcsetup (heads/master)
commit = 5ed09938e46a7e5b42570bb285042fa9356ce0ce
commit = 8a51b63c953466077824b3ed1177f09b2e555257
[submodule.dune-xt-la]
remote = git@github.com:dune-community/dune-xt-la.git
status = c0b1735fab0ecbd4bb4f1eaa27cb65fe813e98f0 .vcsetup (heads/master)
commit = 85b23137dc189ab6edc078fd68969c403a1b73b3
status = +c0b1735fab0ecbd4bb4f1eaa27cb65fe813e98f0 .vcsetup (heads/master)
commit = a7b535e1289c88579c4d7e0a0b24af5415e6ba23
[submodule.scripts]
remote = https://github.com/wwu-numerik/scripts.git
status = fb5ebc10e647d637c69497af2ec2560847eb2112 python/pylicense (fb5ebc1)
status = fb5ebc10e647d637c69497af2ec2560847eb2112 python/pylicense (v0.2.0~10)
commit = 09d0378f616b94d68bcdd9fc6114813181849ec0
// This file is part of the dune-xt-common project:
// https://github.com/dune-community/dune-xt-common
// Copyright 2009-2018 dune-xt-common developers and contributors. All rights reserved.
// License: Dual licensed as BSD 2-Clause License (http://opensource.org/licenses/BSD-2-Clause)
// or GPL-2.0+ (http://opensource.org/licenses/gpl-license)
// with "runtime exception" (http://www.dune-project.org/license.html)
// Authors:
// Tobias Leibner (2018)
#ifndef DUNE_XT_COMMON_VECTOR_LESS_HH
#define DUNE_XT_COMMON_VECTOR_LESS_HH
#include <dune/xt/common/vector.hh>
#include <dune/xt/common/float_cmp.hh>
namespace Dune {
namespace XT {
namespace Common {
//! struct to be used as comparison function e.g. in a std::map<FieldVector<...>, ..., VectorLess>
struct VectorLess
{
template <class FirstVectorType, class SecondVectorType>
bool operator()(const FirstVectorType& a, const SecondVectorType& b) const
{
using V1 = VectorAbstraction<FirstVectorType>;
using V2 = VectorAbstraction<SecondVectorType>;
for (size_t dd = 0; dd < a.size(); ++dd) {
if (V1::get_entry(a, dd) < V2::get_entry(b, dd))
return true;
else if (V1::get_entry(a, dd) > V2::get_entry(b, dd))
return false;
}
return false;
}
};
//! like VectorLess but using FloatCmp::lt instead of "<"
struct VectorFloatLess
{
template <class FirstVectorType, class SecondVectorType>
bool operator()(const FirstVectorType& a, const SecondVectorType& b) const
{
using V1 = VectorAbstraction<FirstVectorType>;
using V2 = VectorAbstraction<SecondVectorType>;
for (size_t dd = 0; dd < a.size(); ++dd) {
if (XT::Common::FloatCmp::lt(V1::get_entry(a, dd), V2::get_entry(b, dd)))
return true;
else if (XT::Common::FloatCmp::gt(V1::get_entry(a, dd), V2::get_entry(b, dd)))
return false;
}
return false;
}
};
} // namespace Common
} // namespace XT
} // namespace Dune
#endif // DUNE_XT_COMMON_VECTOR_LESS_HH
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment