C++学习
文章平均质量分 61
lifengguo_njupt
这个作者很懒,什么都没留下…
展开
-
C++string类的c_str()函数
标准库的string类提供了3个成员函数来从一个string得到c类型的字符数组:c_str()、data()、copy(p,n)。 1. c_str():生成一个const char*指针,指向以空字符终止的数组。 注: ①这个数组的数据是临时的,当有一个改变这些数据的成员函数被调用后,其中的数据就会失效。因此要么现用先转换,要么把它的数据复制到用户自己可以管理的内存中。注意。看下例:转载 2012-08-14 09:21:52 · 2281 阅读 · 0 评论 -
const常量和#define宏常量的区别
C++可以用const定义常量,也可以使用#define来定义常量,但是前者比后者有更多的优点: 1,const常量有数据类型,而宏常量没有数据类型,编译器可以对前者进行静态类型安全检查,而对后者只进行字符替换,没有类型安全检查,并且在字符替换时可能产生意想不到的错误(边际效应) 2,有些集成化的调试工具可以对const常量进行调试,但是不能对宏常量进行调试。 所以在C++中应尽量使用原创 2012-09-18 16:38:35 · 3483 阅读 · 0 评论 -
strcpy 和memcpy有什么不同
strcpy 和memcpy有什么不同 strcpy()函数只能拷贝字符串。strcpy()函数将源字符串的每个字节拷贝到目的字符串中。当遇到字符串末尾的NULL字符('\0')时,它会结束拷贝,并在目的字符串后面自动加上'\0' memcpy()函数可以拷贝任意类型的数据。因为并不是所有的数据都已NULL字符结束,所以要为memcpy()函数指定要拷贝的字节数。 自拷贝字符串时,通原创 2012-09-18 16:11:14 · 649 阅读 · 0 评论 -
strcut和class的区别
C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能。 struct能包含成员函数吗? 能! struct能继承吗? 能!! struct能实现多态吗? 能!!! 既然这些它都能实现,那它和class还能有什么区别? 最本质的一个区别就是默认的访问控制: 默认的继承访问权限 struct是public的,cl翻译 2012-09-18 09:42:14 · 701 阅读 · 0 评论 -
C++虚函数和纯虚函数的区别
C++虚函数和纯虚函数的区别 1.虚函数和纯虚函数可以定义在同一个类中,含有纯虚函数的类被称为抽象类,而只含有虚函数的类不能被称为抽象类。 2.虚函数可以被直接使用,也可以被子类重载以后,以多态的形式调用,而纯虚函数必须在子类中实现该函数才可以使用,因为纯虚函数在基类有声明而没有定义。 3.虚函数和纯虚函数都可以在子类中被重载,以多态的形式被调用。 4.虚函数和纯虚函数通常存在转载 2012-09-18 09:45:09 · 800 阅读 · 0 评论 -
malloc/free与new/delete的区别
相同点:都可用于申请动态内存和释放内存 不同点: (1)操作对象有所不同。 malloc与free是C++/C 语言的标准库函数,new/delete 是C++的运算符。对于非内部数据类的对象而言,光用maloc/free 无法满足动态对象的要求。对象在创建的同时要自动执行构造函数, 对象消亡之前要自动执行析构函数。由于malloc/free 是库函数而不是运算符,不在编译器控制权限之内,不转载 2012-09-14 10:47:37 · 304 阅读 · 0 评论 -
C/C++中extern中的作用
1、 声明外部变量 现代编译器一般采用按文件编译的方式,因此在编译时,各个文件中定义的全局变量是 互相透明的,也就是说,在编译时,全局变量的可见域限制在文件内部。下面举一个简单的例子。创建一个工程,里面含有A.cpp和B.cpp两个简单的C++源文件: //A.cpp int i; void main() { } //B.转载 2012-09-11 17:01:02 · 921 阅读 · 0 评论 -
C/C++中static的作用
static关键字是C, C++中都存在的关键字, 它主要有三种使用方式, 其中前两种只指在C语言中使用, 第三种在C++中使用(C,C++中具体细微操作不尽相同, 本文以C++为准). (1)局部静态变量 (2)外部静态变量/函数 (3)静态数据成员/成员函数 下面就这三种使用方式及注意事项分别说明 一、局部静态变量 在C/C++中, 局部变转载 2012-09-11 16:54:55 · 1034 阅读 · 0 评论 -
extern C的作用
extern "C"的主要作用就是为了能够正确实现C++代码调用其他C语言代码。加上extern "C"后,会指示编译器这部分代码按C语言的进行编译,而不是C++的。由于C++支持函数重载,因此编译器编译函数的过程中会将函数的参数类型也加到编译后的代码中,而不仅仅是函数名;而C语言并不支持函数重载,因此编译C语言代码的函数时不会带上函数的参数类型,一般之包括函数名。 这个功能十分有用处转载 2012-09-11 16:13:26 · 747 阅读 · 0 评论 -
最长回文子串(manacher算法实现)
#include using namespace std; #define M 1000 void Manacher(char *str,char*maxpalindrome )//str接受原始字符串 maxpalindrome存储最长回文子串 { int i,j; int maxrad=0,position=0;//记录最长回文半径和出现最长回文半径的地方 in原创 2012-09-08 16:33:43 · 296 阅读 · 0 评论 -
最长回文子串(manacher算法实现)
#include using namespace std; #define M 1000 void Manacher(char *str,char*maxpalindrome )//str接受原始字符串 maxpalindrome存储最长回文子串 { int i,j; int maxrad=0,position=0;//记录最长回文半径和出现最长回文半径的地方 in原创 2012-09-08 16:29:56 · 312 阅读 · 0 评论 -
求两个有序数组的中位数
在叙述问题之前,重新叙说一下分治策略的思想:将一个难以直接解决的大问题,分割成一些规模较小的相同的问题,以便各个击破,分而治之。 中位数问题:设X[0:n-1]和Y[0:n-1]为两个数组,每个数组中含有N个 已经排好序的数。试设计一个O(logn)时间算法,找出X和Y的2N个数的中位数。 解决问题的核心:找出将大问题分割成较小规模的相同问题的切割点,并递归定义转载 2012-09-21 10:05:35 · 983 阅读 · 0 评论