swift
sequence.cpp
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (C) 2021 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
5 
6 #include "misc/sequence.h"
7 
8 #include <numeric>
9 
10 namespace swift::misc::private_ns
11 {
12  QVector<int> findIndices(int size, const std::function<bool(int)> &predicate)
13  {
14  QVector<int> result(size);
15  std::iota(result.begin(), result.end(), 0);
16  result.erase(std::remove_if(result.begin(), result.end(), std::not_fn(predicate)), result.end());
17  return result;
18  }
19 
20  QVector<int> sortIndices(int size, const std::function<bool(int, int)> &cmp)
21  {
22  QVector<int> result(size);
23  std::iota(result.begin(), result.end(), 0);
24  std::sort(result.begin(), result.end(), cmp);
25  return result;
26  }
27 } // namespace swift::misc::private_ns
QVector< int > sortIndices(int size, const std::function< bool(int, int)> &cmp)
Decouple sorting from value type.
Definition: sequence.cpp:20
QVector< int > findIndices(int size, const std::function< bool(int)> &predicate)
Decouple finding from value type.
Definition: sequence.cpp:12