Live every day, as if it's your last one
1
| return iterator; ? |
Verder zou het makkelijk zijn als je een stukje (psuedo) code post zodat duidelijk word hoe je naar de functie gaat en wat je precies doet.
Alles kan stuk.
Er zit weinig anders op dan zelf een implementatie maken (vrij simpel), of door een andere datastructuur te gebruiken (bijv. std::set)
remco_k: uhm, z'n post is heel duidelijk hoor. std::binary_search is gewoon een standaard functie.
[ Voor 15% gewijzigd door .oisyn op 19-07-2007 17:34 ]
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| class CAreaSize { public: int size; int labelIndex; } class Areas { private: vector<CAreaSize> AllAreas; if(binary_search(AllAreas.begin(), AllAreas.end(), index)) { .. // hier wil ik weten op welke lokatie de waarde 'index' gevonden is in de vector AllAreas } bool operator<(const int s, const CAreaSize& a) { return s < a.labelIndex; } bool operator<(const CAreaSize& a, const int s) { return a.labelIndex < s; } } |
Maar nu wil ik niet alleen true of false maar ook de lokatie waar deze waarde dan gevonden is. Ik ben absoluut niet goed in C++ maar het moest nu eenmaal in die taal.
Live every day, as if it's your last one
Misschien voldoet std::lower_bound of std::upper_bound. Die doen volgensmij ook een binary-search en geven wel een iterator terug.
[ Voor 51% gewijzigd door JeromeB op 19-07-2007 17:39 ]
PC load letter? What the fuck does that mean?
Nu ik erover denk kun je ook gewoon std::lower_bound() gebruiken, en dat is waarschijnlijk ook meteen de reden waarom std::binary_search() een bool returnt. std::lower_bound() geeft namelijk het eerste element dat groter of gelijk is aan het element dat je zoekt. Je kunt ook std::equal_range() gebruiken, die in principe de lower_bound en de upper_bound geeft, oftewel de range van elementen die aan je searchquery voldoen. Zijn beide iterators hetzelfde, dan is er niets gevonden.
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Live every day, as if it's your last one
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.