[c++:template] std::sort(first, last, myfunction)

Permalänk
Medlem

[c++:template] std::sort(first, last, myfunction)

Hej sitter och förstår inte riktigt varför min std::sort inte klara av min bool less medlem i klassen. tack för svar!
Jag har bara suttit och testa genom att göra push med ints. men sedan ska den gemföra strcut med över skriven gemförelse operator.

template <typename T> class p_queue{ public: p_queue(){}; ~p_queue(){}; T pop(){ //tar bort värdet med högst prioritet och returera dess värde. T temp = node[0]; node.erase( node.begin() ); return temp; } void push(T e){ //push sätter in elementet längst back sedan sortera up kön. node.push_back(e); sort(); } int size(){//säger storleken på kön. return node.size(); } bool empty(){ return node.empty(); } void print(){ for(size_t i = 0; i < size(); i++){ std::cout << node[i] << std::endl; } } bool less(T a, T b){//jämför a och b och returna vilken som är minst return a<b; //skriv över jämförelse operatorn så den passar in i detta sammanhang } void sort(){ std::sort(node.begin(), node.end(), less); } private: std::vector<T> node; };

Visa signatur

Смерть -это решение всех проблем. Нет человека - нет проблемы
Comp1: Ubuntu 16.04 Comp2: Arch Linux
Comp3: Ubuntu Server 16.04 Comp4: Centos 6.5
Comp5: Linux mint 16 Comp6: Raspberry pi (olika OS hela tiden)
Phone: Motorola Google Nexus 6

Permalänk
Medlem

nvm, löste det med att sätta in en std::less() istället.

Visa signatur

Смерть -это решение всех проблем. Нет человека - нет проблемы
Comp1: Ubuntu 16.04 Comp2: Arch Linux
Comp3: Ubuntu Server 16.04 Comp4: Centos 6.5
Comp5: Linux mint 16 Comp6: Raspberry pi (olika OS hela tiden)
Phone: Motorola Google Nexus 6

Permalänk
Datavetare

Du har ju redan löst ditt problem här är att "less()" är en medlem till klassen "p_queue", vilket inte är alls vad du vill då det inte är "p_queue" instanser du vill sortera utan instanser av typ "T".

Du deklarera "less" som "static" och låta din "sort" ta en "less" funktion som argument.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer