C/C++
文章平均质量分 73
xgf415
这个作者很懒,什么都没留下…
展开
-
STL容器操作总结
设计库的目的是为容器类型提供通用接口。如果两种容器提供相似的操作,则为它们定义的这个操作应该完全相同。例如,所有容器都有返回容器内元素个数的操作,于是所有容器都将操作命名为 size,并将 size 返回值的类型都指定为 size_type 类型。类似地,算法具有一致的接口。例如,大部分算法都作用在由一对迭代器指定的元素范围上。容器提供的操作和算法是一致定义的,这使得学习标准库更容易:原创 2016-10-26 22:25:02 · 2479 阅读 · 0 评论 -
C++ STL 常用算法
标准库定义了一组泛型算法:因为它们实现共同的操作,所以称之为“算法”;而“泛型”指的是它们可以操作在多种容器类型上——不但可作用于 vector 或 list 这些标准库类型,还可用在内置数组类型、甚至其他类型的序列上。大多数算法是通过遍历由两个迭代器标记的一段元素来实现其功能。算法通过迭代器访问元素,这些迭代器标记了要遍历的元素范围。使用泛型算法必须包含 algorithm 头文件:原创 2016-10-27 21:41:31 · 6190 阅读 · 2 评论 -
error C2664: 不能将参数 1 从“const char [17]”转换为“LPCTSTR”
vs2010 出现如下提示:error C2664: “CWnd::MessageBoxW”: 不能将参数 1 从“const char [17]”转换为“LPCTSTR”这个错误提示的原因是 VS2010 默认使用的是 UNICODE 字符集,在参数转换时会出错。解决方法很简单。方法一:MessageBox(_T("你已经提交成功。"));即在参数前加上 _T转载 2016-12-06 21:55:43 · 8335 阅读 · 1 评论 -
使用 MATLAB Coder 将 MATLAB 代码生成 C/C++ 代码
MATLAB Coder 可以将 MATLAB 代码生成独立的、可读性强、可移植的 C/C++ 代码。使用 MATLAB Coder 产生代码的3个步骤:准备用于产生代码的MATLAB算法;检查MATLAB代码的兼容性(有些matlab代码语句并不能生成c/c++代码);产生最终使用的源代码或 MEX。一个简单的例子,两数相乘:1、安装 matlab2011a 或者转载 2017-01-12 20:05:53 · 10105 阅读 · 0 评论 -
C++模板编译模型
编译器只有在用到模板时,如调用了函数模板或调用了类模板的对象的时候,编译器才产生特定类型的模板实例。编译时,模板与普通函数、类的区别:普通函数,只需函数声明,声明与定义分离;类类型,类定义可用,但成员函数只需声明,成员函数声明与定义分离;模板,要进行实例化,必须包含函数模板或类模板成员函数的定义。标准 C++ 编译模板代码的两种模型:包含编译、分别编译相同点:构造程原创 2016-10-28 20:59:54 · 1598 阅读 · 0 评论 -
C++模版特化
问题:对于compare 函数模板,与 C 风格字符串一起使用,它们都不能正确工作:// 函数模版定义template int compare(const T &v1, const T &v2){ if (v1 < v2) return -1; if (v2 < v1) return 1; return 0;}如果用两个 const char* 实参调用这个原创 2016-10-30 20:43:52 · 1306 阅读 · 0 评论 -
关于C变量作用域和生存期的常见问题
作用域作用域描述了程序中可以访问一个标识符的一个或多个区域,一个C变量的作用域可以是代码块作用域、函数原型作用域,或者文件作用域。代码块是包含在一对花括号内的一段代码,在代码块中定义的变量具有代码块作用域,从该变量被定义的地方到包含该定义的代码块的末尾该变量均可见,但只局限于代码块。因此,函数作用域也属于代码块作用域。一个在所有函数之外定义的变量具有文件作用域,从定义开始到包含该文原创 2016-07-21 19:12:55 · 5478 阅读 · 0 评论 -
在结构中使用字符数组还是字符指针
声明一个数组有三种方法:声明一个数组,声明时用常量表达式指定数组维数声明一个变长数组,声明时用变量表达式指定数组位数(C99以后)声明一个指针,调用malloc()分配合适的内存使用第二种和第三中方法可以创建一个动态数组,即一个程序在运行时才分配内存并可选择数组的大小在结构中使用字符数组和字符指针存储字符串都是可行的,如下面的声明123原创 2016-07-20 10:44:21 · 1627 阅读 · 0 评论 -
C语言高级指针
函数指针当声明一个函数指针时,必须声明它指向的函数类型,即要指出函数的返回类型以及函数的参数类型。声明一个指向特定函数类型的指针的简单方法是,首先声明一个该类型的函数,然后用( *pf )形式的表达式代替函数名称12int f1 (int); //声明一个返回类型为void 、具有一个int型参数的函数f1int ( *原创 2016-07-19 19:16:44 · 1885 阅读 · 0 评论 -
C++函数对象operator()
函数对象:定义了调用操作符()的类对象。当用该对象调用此操作符时,其表现形式如同普通函数调用一般,因此取名叫函数对象。举个最简单的例子:class A { public: int operator() ( int val ) { return val > 0 ? val : -val; } }; 类A中定义了操作符 ( ),A原创 2016-10-29 21:59:50 · 30517 阅读 · 7 评论 -
C++句柄类(智能指针)小结
句柄类作用主要有两个:支持面向对象编程,实现多态性质;减少头文件的编译依赖关系,让文件间的编译更加独立。1.句柄类存储和管理基类指针,指针既可以指向基类类型对象又可以指向派生类型对象。用户通过句柄类访问继承层次的操作,用户可以获得动态行为,同时能够确保自动正确的销毁动态分配的对象,防止内存泄露。《C++ Primer》 15.7 节中用购物篮的例子说明了C++不能通过对原创 2016-10-29 20:01:21 · 3146 阅读 · 0 评论