stl::lower_boundって便利
intのポインタを使ってlower_boundをやってみました。
返り値はイテレーターってことで、intのポインタなわけです。
#include <algorithm> #include <deque> #include <iostream> using namespace std; int main() { unsigned char *tmp; tmp = (unsigned char*)(new int[10]); for( int i = 0; i < 10; i++ ){ ((int*)tmp)[i] = 10 + i; } for( int i = 0; i < 10; i++ ){ cout << ((int*)tmp)[i] << " "; } cout << endl; int* a = lower_bound( ((int*)tmp), ((int*)tmp) + 10, 11); cout << "a = " << *a << endl; cout << "a - tmp = " << a - (int*)tmp << endl; return 0; }
g++だとこれでOKでした。
でも、Visual Studio2003だと、コンパイルエラー…
lower_boundの第4引数にint型用の比較関数を作り、ポインタを渡さないとダメでした…。