算法
moonlinc
这个作者很懒,什么都没留下…
展开
-
将整型数组转成一个完整的整型数字
int EGMSLoginRewardLayer::getIntegerFromArray(vector velue){ for(vector::iterator iter=velue.begin();iter!=velue.end();++iter) { CCLOG("%d",*iter); } CCLOG("finish"); int原创 2014-04-18 19:16:39 · 1534 阅读 · 0 评论 -
原码、反码、补码、移码
十进制 43 -43 二进制 101011 10101011 原码 00101011 10101011 反码(除符号位以外,进行非运算) 01010100 11010100 补码(反码+1) 01010101 11010101 移码(补码符号位取反) 11010101 01010101(为了简化,假设8位,实际上是32位)原创 2014-04-26 22:05:47 · 660 阅读 · 0 评论 -
获得int最小值
按位左移运算符1ps:现在系统多以补码存储二进制十进制-8二进制1000ps(为了简化,假设8位,实际上是32位)原创 2014-04-26 22:05:50 · 466 阅读 · 0 评论 -
std::sort数组排序
自定义模板排序:void sort(_RandomAccessIterator __first,_RandomAccessIterator __last, _Compare __comp);//__first:起始对象,__last:最后对象,__comp:比较大小方法举例:std::sort(array->data->arr,array->data->arr+array->da原创 2014-04-26 22:05:31 · 1262 阅读 · 0 评论 -
当随机不够随机--洗牌算法易犯的错误
错误1: 差一错误上述算法试图遍历所有牌,将每一张牌跟另外一张随机选择的牌进行交换。但是犯了每个程序员都犯过的错误——差一错误。函数random(n)返回一个0到n-1之间的随机数,而不是程序员所想的1到n之间的。因此,这个算法中第52张牌永远不会和他自己进行交换,也就是说第52张牌永远不会停在第52个位置。这是随机洗牌不够随机的第一个原因。错误2:洗牌不均匀上述算法将第i转载 2014-04-26 21:46:22 · 550 阅读 · 0 评论 -
位运算符--获得int型最大值
按位左移运算符1<<31 - 1按位取反运算符~~(1类型转换((unsign int)-1)>>1函数sizeofsizeof(int)(为了简化,假设8位,实际上是32位)原创 2014-04-26 22:05:45 · 1982 阅读 · 0 评论 -
split字符串分割函数
std::vector std::string>split(const char *string,const char *patternStr){ std::string str = string; std::string pattern = patternStr; std::string::size_typepos; std::vector<原创 2014-04-26 22:06:22 · 498 阅读 · 0 评论 -
替换字符串
void str_replace(std::string &str, const std::string &strsrc, const std::string &strdst){ std::string::size_type pos = 0;//位置 std::string::size_type srclen = strsrc.size();//要替换的字符串大小 st转载 2014-04-08 18:39:03 · 419 阅读 · 0 评论 -
逗号和分号分割字符串
void splitBy(string read,const char* fenhao,const char* douhao,CCArray *disArray){ str_replace(read, ",", ","); str_replace(read, " ", ""); str_replace(read, "\n", ""); vector tempArr转载 2014-04-09 14:15:22 · 810 阅读 · 0 评论 -
字符串去掉空白
void ltrim(char *s){// 去掉前部的 int l=0,p=0,k=0; l = strlen(s); if( l == 0 ) return; p = 0; while( s[p] == ' ' || s[p] == '\t' ) p++; if( p == 0 ) return; while( s[k] != '\0转载 2014-04-08 18:34:37 · 438 阅读 · 0 评论 -
超过10000 的数字转为 **万的格式
const char * stringValueFromNumber(int number){ //NSString *str = @""; if (number>=100000) { number = number / 10000; return CCString::createWithFormat("%d%s", number, "万")->g转载 2014-04-08 18:38:31 · 2692 阅读 · 1 评论 -
十六进制转十进制
int hexToInt(const char *str){ std::string string = str; std::string charStr = "0123456789abcdefABCDEF"; int size = string.length(); if (size <= 0) { return 0; } int *转载 2014-04-08 18:39:36 · 386 阅读 · 0 评论 -
字符串分割 Array
void splitBy(string read,const char* douhao,CCArray *disArray){ str_replace(read, ",", ","); str_replace(read, " ", ""); str_replace(read, "\n", ""); // CCLOG("read:%s",read.c_str(转载 2014-04-09 14:16:07 · 479 阅读 · 0 评论 -
获取随机值
int getRandm(int num){ srand(time(NULL));//使用这个就可以每次不同 int randnum = rand()%num; return randnum;}转载 2014-04-09 14:13:58 · 427 阅读 · 0 评论 -
将分数转化为百分比字符串
const char* percentStringFromFenZi(int fenZi,int fenMu){ if (fenMu!=0) { int result =(float)fenZi *100 /(float)fenMu; char tempStr[1024] = {'\0'}; sprintf(tempStr,转载 2014-04-08 18:36:27 · 784 阅读 · 0 评论 -
时间戳转化为时间字符串 0:0:0 %lli:%lli:%lli
const char* dateStringWithInterval(TimeInterval timeSeconds){ if (timeSeconds < 0) { return CCString::create("0:0:0")->getCString(); } long long int time = (long long int )timeSeconds; time转载 2014-04-08 18:37:06 · 671 阅读 · 0 评论 -
字符串分割函数 vector
std::vector split(const char *string, const char *patternStr){ std::string str = string; std::string pattern = patternStr; std::string::size_type pos; std::vector result; str+=pat转载 2014-04-08 18:37:53 · 616 阅读 · 0 评论