set的二分查找
set支持二分查找,毕竟它本身就是一个平衡树(似乎是传说中的红黑树?)。同时erase操作也很方便,演示:
set<int>s;
for(int i=1;i<=5;i++)s.insert(i);
//data in set:1 2 3 4 5
set<int>::iterator it=s.lower_bound(2);
printf("%d\n",*it);s.erase(it);
//data in set:1 3 4 5
printf("%d\n",*s.lower_bound(1));
s.erase(s.begin());
//data in set:3 4 5
printf("%d\n",*s.lower_bound(1));
output:
2
1
3
一如既往,万事胜意