class iphone
{
public:
iphone();
~iphone();
void init();
void ShowStar();
void ShowScore();
private:
typedef void(iphone::*CALLBACK_FUN)();
CALLBACK_FUN pFun;
//听说函数表是静态的 所以这个map也要定义成静态...
map<int,CALLBACK_FUN> funList;
};
//iphone.cpp
iphone::iphone()
{
}
iphone::~iphone()
{
}
void iphone::ShowStar()
{
printf ("showstar/n");
}
void iphone::ShowScore()
{
printf("showscore/n");
}
void iphone::init()
{
pFun =(CALLBACK_FUN)&iphone::ShowStar;
funList[1] = pFun;
pFun = (CALLBACK_FUN)&iphone::ShowScore;
funList[2] = pFun;
for(map<int,CALLBACK_FUN>::iterator it = funList.begin();it!=funList.end();++it)
{
//重点来了...
(this->*(it->second))();
}
}
int array[10] = {75,0,25,43,3,6,100,80,60,2};
int temp;
for (int i = 0; i<10; ++i) {
Utils::LOG(cT("%d"),array[i]);
}
Utils::LOG(cT("华丽的分割线"));
for (int i = 9; i>0; --i) {
for (int j = 0; j<=i; ++j) {
if (array[j]>array[j+1]) {
temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
for (int i = 0; i<10; ++i) {
Utils::LOG(cT("%d"),array[i]);
}
Utils::LOG(cT("二分查找"));
//find 100
int x = 100;
int low = 0,high = 9;
while (low<=high) {
int mid = (low+high)/2;
Utils::LOG(cT("%d"),mid);
if(x == array[mid])
{
Utils::LOG(cT("%d"),mid);
}
if (x>array[mid]) {
low = mid+1;
}else {
high = mid-1;
}
}