Per lo std :: priority_queue, ho assunto che il primo parametro del modello specificasse il tipo e il secondo fosse un contenitore di quel tipo. Esempio:Qual è l'uso del primo parametro del modello in priority_queue
priority_queue<int, vector<int>> someQueue;
Tuttavia, il seguente codice compila e sembra che vada tutto bene:
class SomeClass
{
};
int main()
{
priority_queue <SomeClass, vector<int>> pq;
int x = 9;
pq.push(x);
int t = pq.top();
cout << t << endl;
pq.pop();
return 0;
}
è il codice di cui sopra non validi (cioè dando UB)?
Se è valido, qual è il primo parametro di modello (ad esempio someClass
) utilizzato in priority_queue.
Bella scoperta. Ti permette di scrivere 'priority_queue', suppongo. Non è usato da nessun'altra parte e non vedo alcun requisito nello standard. –
Se vedi, ad es. [questo riferimento a 'std :: priority_queue'] (http://en.cppreference.com/w/cpp/container/priority_queue) vedrai che i tipi usati per i dati memorizzati effettivamente usano i tipi dal contenitore, non il fornito il primo argomento del modello. Se dovrebbe essere così e quello che dice la specifica non lo so. –
Il parametro firsrt è il tipo di elemento nel secondo parametro. Quindi penso che 'priority_queue> pq;' sia sbagliato. per favore riferisciti a: http: //www.cplusplus.com/reference/queue/priority_queue/ –
BlackMamba