aboutsummaryrefslogtreecommitdiffstats
path: root/util/generic/algorithm.h
diff options
context:
space:
mode:
authorswarmer <swarmer@yandex-team.com>2022-07-19 10:51:56 +0300
committerswarmer <swarmer@yandex-team.com>2022-07-19 10:51:56 +0300
commitc64ee34d9c321fa796868ddca03dddb174704107 (patch)
tree6d1c404eec735f72b689e4127825e201897d86ac /util/generic/algorithm.h
parent69194c8f03984728c5a08d32026aab02c0b25f7a (diff)
downloadydb-c64ee34d9c321fa796868ddca03dddb174704107.tar.gz
[util] prefer non-const begin/end method for non-const containers in AdjacentFind* functions
AdjacentFind и AdjacentFindBy принимали контейнер по константной ссылке и из-за этого возвращали константный итератор. Стоит для некостантного контейнера возвращать также неконстантный итератор (если он есть). Это позволит 1. использовать итератор для модификации контейнера; 2. обойти проблему, когда методы `end()` и `cend()`/`std::as_const(…).end()` возвращают итераторы разных типов, которые нельзя сравнивать, либо для которых выбор оператора сравнения неоднозначен.
Diffstat (limited to 'util/generic/algorithm.h')
-rw-r--r--util/generic/algorithm.h6
1 files changed, 3 insertions, 3 deletions
diff --git a/util/generic/algorithm.h b/util/generic/algorithm.h
index d3b198fb23..70efc50609 100644
--- a/util/generic/algorithm.h
+++ b/util/generic/algorithm.h
@@ -715,14 +715,14 @@ constexpr std::pair<It, It> EqualRange(It begin, It end, const Val& val, Comp co
}
template <class TContainer>
-constexpr auto AdjacentFind(const TContainer& c) {
+constexpr auto AdjacentFind(TContainer&& c) {
using std::begin;
using std::end;
return std::adjacent_find(begin(c), end(c));
}
template <class TContainer, class Compare>
-constexpr auto AdjacentFind(const TContainer& c, Compare comp) {
+constexpr auto AdjacentFind(TContainer&& c, Compare comp) {
using std::begin;
using std::end;
return std::adjacent_find(begin(c), end(c), comp);
@@ -736,7 +736,7 @@ namespace NPrivate {
}
template <class TContainer, class TGetKey>
-constexpr auto AdjacentFindBy(const TContainer& c, const TGetKey& getKey) {
+constexpr auto AdjacentFindBy(TContainer&& c, const TGetKey& getKey) {
using std::begin;
using std::end;
return ::NPrivate::AdjacentFindBy(begin(c), end(c), getKey);