2013-05-21 12 views
9
  1. wiem, że mogę używać *s.begin(), ale sam argument może być używany do vector, który ma front/back
  2. często używam uporządkowaną własność set/mapie, aby uzyskać „najmniejszy” elementem/key - ofc faktu że zrobić to nie jest powód, aby go mieć, tylko przykład :)

Tutaj mówię o projekt powody front/back byłby zły projekt, więc proszę pominąć oczywistych powodów, takich jak komitet zapomniał o tym ...Czy istnieje powód, dla którego std :: set nie ma funkcji front i back member?

Odpowiedz

20

Wyobrażam sobie, że słowa "przód" i "tył" są zarezerwowane dla kontenerów sekwencji (tj. te, w których kolejność elementów jest określona przez kolejność wstawiania), a słowa mają sugerować fizyczne położenie w tej sekwencji.

Ponieważ set nie jest kontenerem sekwencji (ale zamiast pojemnika asocjacyjnego), nie jest to odpowiednie. W szczególności zwróć uwagę, że znaczenie "przodu" może się zmienić w wyniku późniejszego wstawienia niepowiązanego elementu.

+4

Drugi akapit tak naprawdę nie ma sensu; "powrót" wektora 'może się również zmienić poprzez' push_back'. Ale +1 do pierwszego akapitu. –

+3

@larsmans: Tak, "powrót" może się zmienić, jeśli zmienisz tył. Ale wyraźnie zmienisz się z powrotem. W zestawie byłaby to * niezwiązana * zmiana, jeśli zobaczysz co mam na myśli. To wyjaśnienie działa najlepiej, gdy myślisz o liście. –

+2

W porządku, wystarczy. –

Powiązane problemy