C/C++/STL
文章平均质量分 56
Rainloving
本人性格开朗,与人和善,有合作精神,有发现问题、解决问题的能力。
展开
-
c++中的段错误(segment fault)
段错误一般发生在递归导致的栈溢出或这数组溢出,还有就是if语句中可能出错,比如一个链表结构:struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};在链表指针指向为空的时候,它就不可能存在val值,这时候,如果你的if原创 2015-05-08 10:00:05 · 7412 阅读 · 0 评论 -
读书笔记:自定义函数实现字符串处理函数----strlen、strcmp、strcat、strcpy
一、strlen函数。int strlen(const char* str){ assert(str!=NULL); int len = 0; while((*str++)!='\0') len++; return len;}//无中间变量int strlen1(const char* str){ assert(str!=NULL原创 2015-07-21 15:36:28 · 1621 阅读 · 0 评论 -
读书笔记:实现string类的构造函数、拷贝构造函数、析构函数、重载运算符=
#include #include #include using namespace std;class MyString{public: MyString(const char* pData = NULL); MyString(const MyString& other); ~MyString(); MyString& MyString::operat原创 2015-07-22 10:19:48 · 1460 阅读 · 0 评论 -
关于a++(自增)的一个问题
以前,认为,a++,相当于,a, a++;后来,在做题的时候,发现一个问题,就是:int main(void){ int m=5; if(m++>5); cout<<m<<endl;}如果,按照我之前的认为,翻译为:int main(void){ int m=5; if(m>5) m++; cout<<m<<endl;}执行结果是:而实际的运算结原创 2015-08-14 12:11:12 · 962 阅读 · 1 评论 -
在C++中实现foreach循环,比for_each更简洁!
原文:http://blogread.cn/it/article/2570?f=srpython,c#,java里面都有类似于foreach的结构,stl里面虽然有for_each这个函数,但是感觉使用还是太繁琐了一些,所以就自己实现了一个。 先来看看stl里面的for_each函数,官方文档上的原型如下:1Function for_each (Inp转载 2015-07-23 22:46:58 · 9782 阅读 · 0 评论 -
字符串数组和字符串指针的差别
源代码:#includeusing namespace std;int main(){ char a[] = "string"; char b[] = "string"; bool test = a==b; cout<<"a[]?b[]:"<< boolalpha<<test<<endl; char *c = "string"; ch原创 2015-10-06 17:00:10 · 422 阅读 · 0 评论 -
当字符数组中没有结束符'\0'
当字符数组中没有结束符'\0'的时候,结果未知。代码:#include #include using namespace std;void print(char a[]){ puts(a);}int main(){ char a[5]={'1','2','3','4','5'}; char* b= new char[6]; strcpy(b原创 2015-10-06 17:10:36 · 4519 阅读 · 0 评论 -
C++输入输出流实现未知数目的输入(相当于实现python的split函数)
代码1:#include#include using namespace std;int main(){ string s; getline(cin, s); stringstream ss(s); string s1; while(ss>>s1) cout<<s1<<endl; return 0;}运行结果:原创 2015-10-06 16:53:02 · 904 阅读 · 0 评论 -
string转换成char
例如: string s; cin>>s; constchar *ch=s.c_str(); 这样就可以从标准输入里输入任意长的字符串,并按const*char来使用。 如果要把一个char转换成string,可以使用 strings(char *); 其他类型转换方式:string 转CString CS原创 2015-10-06 16:57:22 · 697 阅读 · 0 评论 -
C++源代码生成可执行文件的四个步骤
以GCC编译器为例:第一步,预处理,包括语法检查等工作。$ gcc -P abc.c会生成abc.i文件。第二步,编译,由源程序生成汇编语言代码。$ gcc -S abc.c会生成abc.s文件,这个文件就是汇编代码。第三步,汇编,编译器生成目标代码,一个源程序生成一个目标代码。$ gcc -c abc.c会生成abc.o文件第四部,链接, 链接器从目标代码转载 2015-10-06 16:46:19 · 5301 阅读 · 1 评论 -
题目:1<n<9, n个猴子,第一个猴子扔一个,然后平均分为n份,拿一份; 第二个猴子扔一个,然后平均分n份,拿一份。。。依次到最后一个猴子也是扔一个,均分n份,拿一份。
#include #include using namespace std;bool judge(float n, float i, float dpI){ if(i-n==0) { float temp = (dpI-1)/n; if(temp-(int)temp == 0) return true; el原创 2015-09-18 21:24:26 · 570 阅读 · 0 评论 -
二叉树的非递归遍历
一、前序遍历。比较简单。如果根非空,进栈;如果栈非空,访问栈顶元素,栈顶元素为p,出栈;如果p的右孩非空,右孩进栈;如果p的左孩非空,左孩进栈;循环2,3,4。源码:void preOrderNoRecursion(BinaryTreeNode* root){ stack visitStack; if(root!=NULL) visitStack原创 2015-07-21 14:12:56 · 527 阅读 · 0 评论 -
leetcode:Next Permutation
原文地址:http://www.cnblogs.com/easonliu/p/3632442.htmlImplement next permutation, which rearranges numbers into the lexicographically next greater permutation of numbers.If such arrangement is no转载 2015-07-31 14:45:28 · 421 阅读 · 0 评论 -
读书笔记:struct
1. 初始化在对结构体变量初始化时,应将各成员所赋初值按照结构体类型说明中的顺序依次放在一对大括号中,不允许跳过前面的成员给后面的成员赋值,但可以只给前面若干成员赋初值,后面未赋初值的成员中,数值型和字符型的数据,系统自动赋值零。例题:#include using namespace std;struct st{ int n; struct st *next;原创 2015-07-20 17:26:16 · 435 阅读 · 0 评论 -
STL中的vector、list、deque、map的数据结构
vector是数组;原创 2015-05-12 20:55:23 · 803 阅读 · 0 评论 -
C++开发者都应该使用的10个c++11特性
胡建的C++11系列博文伯乐在线的C++开发者都应该使用的10个c++11特性转载 2015-05-14 21:43:18 · 832 阅读 · 0 评论 -
当数组元素是应用类型的时候,关于内存分配的理解误区
先看源代码(注意类是引用类型!):class Person{ public int age; public double height; public void info(){ System.out.println("My age is: " + age + ", my height is: " + height); }}public class Test{ publ原创 2015-06-25 22:37:30 · 792 阅读 · 0 评论 -
typedef常见用法
原帖:typedef常见用法typedef常见用法常规类型定义例如: typedef unsigned char uchar 描述: * uchar等价于unsigned char类型的定义 * uchar c声明等于unsigned char c声明数组类型定义例如: typedef int array[2]; 描述: * array等价于 int[2]定义 * array a声明等转载 2015-06-01 13:41:55 · 540 阅读 · 0 评论 -
萃取(traits)编程技术的介绍和应用
.htmlhttp://www.searchtb.com/2014/03/萃取traits编程技术的介绍和应用.html萃取(traits)编程技术的介绍和应用引子最近在写C++代码的时候, 经常能使用到萃取(traits)编程技术, 于是学习STL中关于萃取的知识, 并总结出来, 以飨读者, 同时加深自己的理解.迭代器中萃取技术STL简述S转载 2015-06-15 15:04:34 · 974 阅读 · 1 评论 -
Longest Substring Without Repeating Characters -leetcode
解法一:就是遍历所有符合要求的子串,并且,找出最长子串,时间复杂度为O(n^2),很明显,超时。以下是源码: int lengthOfLongestSubstring(string s) { int result=0; set charSet; int length = s.size(); for(int i=0; i<原创 2015-07-18 19:30:40 · 450 阅读 · 0 评论 -
读书笔记之:memcpy与memset
1.memcpyvoid *memcpy(void *dest, const void *src, size_t n);功能是:从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中。函数返回值为指向dest的指针。strcpy和memcpy的区别:复制的内容不同。strcpy只能复制字符串,而memset可以复制任何内容,例如字原创 2015-07-18 22:23:06 · 630 阅读 · 0 评论 -
给定一个字符串,去重(重复的字符只保留第一次出现的)
源码(c++):#include #include using namespace std;int main(){ string str; cin>>str; int a[256]={0, 0}; int strLen = str.size(); for(int i=0; i<strLen; ++i){ a[str[i]]++;原创 2015-10-15 11:42:41 · 6520 阅读 · 2 评论