mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-21 06:25:30 -04:00
31 lines
676 B
C++
31 lines
676 B
C++
//! \file search.h
|
|
//! Search algorithms
|
|
|
|
#ifndef OPENMC_SEARCH_H
|
|
#define OPENMC_SEARCH_H
|
|
|
|
#include <algorithm> // for lower_bound, upper_bound
|
|
|
|
namespace openmc {
|
|
|
|
//! Perform binary search
|
|
|
|
template<class It, class T>
|
|
typename std::iterator_traits<It>::difference_type lower_bound_index(
|
|
It first, It last, const T& value)
|
|
{
|
|
if (*first == value)
|
|
return 0;
|
|
return std::lower_bound(first, last, value) - first - 1;
|
|
}
|
|
|
|
template<class It, class T>
|
|
typename std::iterator_traits<It>::difference_type upper_bound_index(
|
|
It first, It last, const T& value)
|
|
{
|
|
return std::upper_bound(first, last, value) - first - 1;
|
|
}
|
|
|
|
} // namespace openmc
|
|
|
|
#endif // OPENMC_SEARCH_H
|