
算法
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 · 1568 阅读 · 0 评论 -
原码、反码、补码、移码
十进制 43 -43 二进制 101011 10101011 原码 00101011 10101011 反码(除符号位以外,进行非运算) 01010100 11010100 补码(反码+1) 01010101 11010101 移码(补码符号位取反) 11010101 01010101 (为了简化,假设8位,实际上是32位)原创 2014-04-26 22:05:47 · 699 阅读 · 0 评论 -
获得int最小值
按位左移运算符 1 ps:现在系统多以补码存储二进制 十进制 -8 二进制 1000 ps(为了简化,假设8位,实际上是32位)原创 2014-04-26 22:05:50 · 486 阅读 · 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 · 1299 阅读 · 0 评论 -
当随机不够随机--洗牌算法易犯的错误
错误1: 差一错误 上述算法试图遍历所有牌,将每一张牌跟另外一张随机选择的牌进行交换。但是犯了每个程序员都犯过的错误——差一错误。函数random(n)返回一个0到n-1之间的随机数,而不是程序员所想的1到n之间的。因此,这个算法中第52张牌永远不会和他自己进行交换,也就是说第52张牌永远不会停在第52个位置。这是随机洗牌不够随机的第一个原因。 错误2:洗牌不均匀 上述算法将第i转载 2014-04-26 21:46:22 · 599 阅读 · 0 评论 -
位运算符--获得int型最大值
按位左移运算符 1<<31 - 1 按位取反运算符~ ~(1 类型转换 ((unsign int)-1)>>1 函数sizeof sizeof(int) (为了简化,假设8位,实际上是32位)原创 2014-04-26 22:05:45 · 2033 阅读 · 0 评论 -
split字符串分割函数
std::vector std::string> split(const char *string, const char *patternStr) { std::string str = string; std::string pattern = patternStr; std::string::size_type pos; std::vector<原创 2014-04-26 22:06:22 · 517 阅读 · 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 · 438 阅读 · 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 · 838 阅读 · 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 · 455 阅读 · 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 · 2739 阅读 · 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 · 409 阅读 · 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 · 496 阅读 · 0 评论 -
获取随机值
int getRandm(int num) { srand(time(NULL));//使用这个就可以每次不同 int randnum = rand()%num; return randnum; }转载 2014-04-09 14:13:58 · 451 阅读 · 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 · 821 阅读 · 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 · 687 阅读 · 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 · 695 阅读 · 0 评论