Der folgende C++ 11 Code zeigt, wie dies zu tun:
#include <vector>
#include <map>
int main()
{
std::vector<double> price{0.3, 0.2, 0.1};
auto cmp = [&price](int i, int j){return price[i] < price[j];};
std::map<int, float, decltype(cmp)> m(cmp);
m[2] = 'b';
m[1] = 'c';
}
Die Linie
std::vector<double> price{0.3, 0.2, 0.1};
price
den Vektor definiert.
Die Linie
auto cmp = [&price](int i, int j){return price[i] < price[j];};
schafft eine Lambda-Funktion, die durch Bezugnahme price
einfängt.
Die Linie
std::map<int, float, decltype(cmp)> m(cmp);
schafft einen Behälter (in diesem Fall std::map
) durch diese Art parametriert und als Komparator ein Objekt nehmen. Die Verwendung mit einem anderen Container wird ähnlich sein.
Was genau ist "Preis"? –
Zum Beispiel ein Vektor von Doppeln, der durch int indexiert werden kann und in derselben Klasse definiert ist, in der der Heap verwendet wird. – danatel