2013-05-21 20 views
9
  1. So che posso usare *s.begin(), ma lo stesso ragionamento può essere usato per vector, che ha front/back
  2. spesso io uso la proprietà ordinata di serie/mappa per arrivare elemento "più piccolo" chiave/- OFC il fatto che ho faccio non è la ragione per averlo, solo un esempio :)

Qui sto parlando disegno motivi per cui front/back sarebbe cattiva progettazione, quindi si prega di saltare ovvie ragioni come comitato dimenticato a questo proposito ...Esiste un motivo di progettazione per cui std :: set non ha funzioni membro anteriore e posteriore?

risposta

20

Immagino che le parole "anteriore" e "indietro" siano riservate ai contenitori sequenza (ad es. quelli in cui l'ordine degli elementi è determinato dall'ordine di inserimento) e le parole intendono suggerire una posizione fisica in quella sequenza.

Poiché set non è un contenitore di sequenza (ma invece un contenitore associativo), questo non è appropriato. In particolare, si noti che il significato di "front" può cambiare in seguito inserimenti di un elemento non correlato.

+4

Il secondo paragrafo non ha molto senso; anche il 'back' di un' vector' può cambiare, con un 'push_back'. Ma +1 per il primo paragrafo. –

+3

@larsmans: Sì, "indietro" può cambiare se si modifica la parte posteriore. Ma cambierai esplicitamente la parte posteriore. In un set, sarebbe un * cambiamento * non correlato, se vedi cosa intendo. Questa spiegazione funziona meglio quando si pensa a una lista. –

+2

Va bene, abbastanza giusto. –

Problemi correlati