ďťż

Ładny brzuch

Witam!

Szukałem już tu i ówdzie, ale nigdzie nie moge znaleźć odpowiedzi na mój problem. I zaznaczam, że w stlu stawiam pierwsze kroki :P

Mam sobie multiset, załóżmy {1, 3, 5, 6, 7, 7, 7, 9, 15}
stosując upper_bound(7) funkcja zwróci mi iterator na 8 element (na dziewiątkę). I jak z tego iteratora wyciągnąć, że pokazuje na 8 element, a nie na dziewiątkę? :)

Pozdrawiam!

edit:
Ogólnie mam za zadanie znaleźć ile jest liczb mniejszych lub równych n w danym zbiorze, więc chciałem znaleźć pozycję elemetu zaraz za n (w tym wypadku dla n=7, to upper_bound powinien dać 9), tylko, że interesuje mnie pozycja 9 (czyli 8) i wystarczy że od pozycji odejmę 1 (8 - 1) i już mam ile jest liczb mniejszych lub równych 7 w zbiorze, tylko, że nie mogę znaleźć jak pobrać pozycję (kolejność) elementu w zbiorze...
Użytkownik rzymek01 edytował ten post 26 październik 2008, 10:40


OK, po wielkich trudanch i znojach znalazłem funkcję distance :D

orientujecie się może jaka jest jego złożoność?

Dla multisetu niestety liniowa. Dla wektora byłaby stała.
http://www.cplusplus...r/distance.html

Complexity
Constant for random access iterators.
Linear on the return value for other categories of iterators.


dzieki za odp,

przeczuciłem się na vector (co prawda nie mam już takich udogodnień jak upper_bound, ale napisałem/zaimplementowałem własną szybszą w moim wypadku funkcję), i w związku z tym, że napisałem sobie tę funkcję to chciałbym jako jej argument przekazać iterator vectora, tylko jak pisze w funkcji vector<int>::iterator to błędy wyskakują...



To pokarz może źródło bo trudno powiedzieć co namieszałeś. Coś takiego bez problemu powinno działać:int fun(std::vector<int>::iterator& iter);

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •