あんまり使ったことがなかったので挙動の把握メモ。でかい順に並べておいて、最大のやつを取り除いたときに次にでかいのを知りたい。priority_queueでいいかなと思ったけど、最大以外のものも消えることを想定。
#include <iostream> #include <set> int main(int argc, char *argv[]) { std::set<int, std::greater<int> > s; s.insert(1); s.insert(2); s.insert(3); s.insert(4); s.insert(5); s.erase(2); int max_value = 5; s.erase(max_value); std::set<int>::iterator it = s.lower_bound(max_value); while(it != s.end()) { std::cout << *it << std::endl; it++; } return 0; }
実行結果。
/Users/yasuhisa/cpp% g++ max_value.cpp; ./a.out 4 3 1