
基础
文章平均质量分 73
ForeverDirect
Game Developer
展开
-
do{...} while(0) 用意
linux内核和其他一些开源的代码中,经常会遇到这样的代码:do { // ...}while(0)这样的代码一看就不是一个循环,do…while表面上在这里一点意义都没有,那么为什么要这么用呢?实际上,do{…}while(0)的作用远大于美化你的代码。查了些资料,总结起来这样写主要有以下几点好处:1、辅助定义复杂的宏,避免引用的时候出错:举例来说,假设你需要定义这样一个宏:#define DOSOMETHING()\ foo1();\原创 2020-08-03 11:12:17 · 272 阅读 · 0 评论 -
C++中inline用法
1.引入内联关键字原因在C++中,解决一些频繁调用的小函数大量消耗栈空间(栈内存),特别引入inline修饰符。因为栈空间是有限的,频繁大量的使用会造成栈空间不足而程序出现问题(函数死循环或者递归层级过深)若定义函数宏,不会招致函数调用带来的额外开销,下面这个宏夹杂着宏实参,调用函数f:#define CALL_WITH_MAX(a, b) f( (a) > (b) ? (a) : (...原创 2020-04-12 11:54:45 · 501 阅读 · 0 评论 -
C回调函数用意剖析
1.简述回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数维基百科对回调的解析In computer programming, a callback is any executable code that is passed as an argument to other code, whi...原创 2020-04-11 09:33:58 · 268 阅读 · 0 评论 -
Android-CMakeLists.txt 链接第三方库(动态或者静态库)到自己的生成库中
最近在做关于NDK开发的项目,编译方式通过cmake。如何将第三方动态链接库连接到自己生成的动态库中,按照以下步骤:1.首先看目录结构:首先将第三方库复制到jniLibs下,并创建对应的CUP平台目录2. CMakeLists.txt方式一:# For more information about using CMake with Android Studio, read the# ...原创 2019-12-30 21:54:07 · 2557 阅读 · 2 评论 -
c++中override和final
1. override保留字表示当前函数重写了基类的虚函数目的:1.在函数比较多的情况下可以提示读者某个函数重写了基类虚函数(表示这个虚函数是从基类继承,不是派生类自己定义的);2.强制编译器检查某个函数是否重写基类虚函数,如果没有则报错。用法:在类的成员函数参数列表后面添加该关键字既可,被override修饰后如果父类无对应的虚函数则报错,无法override。例子:class Base...原创 2019-12-23 22:04:15 · 726 阅读 · 1 评论 -
C++ map下标操作[]和insert区别
在构建map时候,我们是使用insert和[]有什么区别呢?哪个更好呢?哪个效率更高呢?哪个更安全呢?首先需要明确的是:map中不允许存在相同的keyBecause map containers do not allow for duplicate key values, the insertion operation checks for each element inserted...原创 2019-12-18 21:49:31 · 2465 阅读 · 1 评论 -
汉字的ASCII码对照表
GB2312和GBK每一个汉字由2个字节组成,这2个字节的ASCII码大小分别是: gb2312:high8 = 0xa1–>0xfe (161 - 254) low8 = 0xa1–>0xfe (161 - 254)gbk:high8 = 0x80–>0xfe (128 - 254) low8 = 0x40–>0xfe (64 - 254)GB23...原创 2018-09-10 21:42:16 · 84252 阅读 · 0 评论 -
工厂模式
1.简单工场模式只有一个工厂,只能生产一个类别的产品(所有产品类都是从一个基类派生)当需要增加新的产品类,就需要改动工厂类它的主要特点是需要在工厂类中做判断,从而创造相应的产品。当增加新的产品时,就需要修改工厂类。通俗实例: 有一家生产处理器核的厂家,它只有一个工厂,能够生产两种型号的处理器核。客户需要什么样的处理器核,一定要显示地告诉生产工厂。enum CTYPE {原创 2018-01-18 21:22:26 · 273 阅读 · 0 评论 -
字符串函数实现
基础函数实现原创 2017-09-21 00:49:06 · 325 阅读 · 0 评论 -
进程间通讯-共享内存
共享内存原创 2017-09-21 00:23:57 · 225 阅读 · 0 评论 -
自旋锁和互斥锁的区别
自旋锁 互斥锁原创 2017-09-28 23:52:07 · 341 阅读 · 0 评论 -
设计模式-单例模式
经典单例模式原创 2017-09-21 00:04:18 · 231 阅读 · 1 评论 -
VS2012使用条件断点和内存断点
调试原创 2017-09-27 20:03:39 · 993 阅读 · 0 评论 -
main函数执行前-C/C++运行时库剖析
main函数执行前原创 2017-09-27 15:07:34 · 523 阅读 · 0 评论 -
for循环效率问题
下面哪种写法循环语句的效率最高?原创 2017-09-11 10:24:54 · 1294 阅读 · 0 评论 -
字符串的旋转
反转字符串原创 2017-09-11 01:31:40 · 221 阅读 · 0 评论 -
杂烩-C++11
基础真的重要…原创 2017-08-31 00:16:47 · 218 阅读 · 0 评论 -
浅谈...一致性哈希
一致性哈希算法原创 2017-09-01 00:21:11 · 247 阅读 · 0 评论 -
8个实战及常用Shell脚本编写
注意事项:1).开头加解释器:#!/bin/bash2).语法缩进,使用四个空格,多加注释说明3).命名建议规范:变量名大写,局部变量小写,函数名小写4).默认变量是全局的,函数中使用local指定局部变量5).调试脚本两个命令:set -e遇到执行非0时退出脚本,set -x打印执行过程6).一定要先测试,在加入到工程中1.获取随机字符串或数字获取随机8位字符串获取随机8位数...原创 2018-10-02 12:46:38 · 7647 阅读 · 0 评论 -
C++:替换文本中的指定字符串
替换文本文件或者二进制文件中的指定字符串// 方法一// 将源文件中的特定字符串替换,内容输出到新文件中bool FileStringReplace(ifstream &instream, ofstream &outstream){ string str; size_t pos = 0; while (getline(instream, str)) // 按行读取原创 2018-10-07 13:08:08 · 16251 阅读 · 5 评论 -
dynamic_cast和 static_cast的区别
dynamic_cast:dynamic_cast < type-id > ( expression)该运算符把expression转换成type-id类型的对象。Type-id必须是类的指针、类的引用或者void*;如果type-id是类指针类型,那么expression也必须是一个指针,如果type-id是一个引用,那么expression也必须是一个引用。dynamic_...原创 2019-09-18 22:58:42 · 3136 阅读 · 0 评论 -
C++异常处理
C++异常处理异常时程序在执行期间产生的问题。C++异常是指在程序运行时发生的特殊情况,比如尝试除以0的操作,以及dynamic_cast强制类型转换(基类指针指向的内存地址无效等)…异常提供了一种转移程序控制权的方式。C++异常处理涉及到三个关键字:try catch throwthrow:当问题出现时,程序会抛出一个异常,这是通过throw关键字来完成的catch:在您想要处理问题的地...原创 2019-09-18 22:25:14 · 428 阅读 · 0 评论 -
HRESULT判断宏
1.SUCCEEDED原型如下:BOOL SUCCEEDED( HRESULT hr);对应的定义(具体的实现):#define SUCCEEDED(hr) (((HRESULT)(hr)) >= 0)2.FAILED原型如下:BOOL FAILED( HRESULT hr);对应的定义(具体的实现):#define FAILED(hr) (((HRESU...原创 2019-08-08 20:54:03 · 504 阅读 · 0 评论 -
C++11 std::to_string
一般常用的转换字符串的方法std::stringstream,但是效率较低;目前C ++11提供了std::to_string效率方面:C风格的sprintf()没有动态分配内存效率最高;std::to_string其次;std::stringstream效率最差从C++17开始,std::to_string的效率将不差于sprintf,同时有类型更安全的转换函数std::to_char...原创 2019-02-14 22:32:59 · 15022 阅读 · 0 评论 -
C++ stringstream介绍以及使用
文章目录背景1. istringstream2. ostringstream3. stringstream背景C++引入了ostringstream istringstream stringstream这三个类,包含#include&amp;lt;sstream&amp;gt;头文件istringstream类似于C++风格字符串的输入操作ostringstream类似于C++风格字符串的输出操作st...原创 2019-01-05 12:39:58 · 2090 阅读 · 1 评论 -
C++基础-string截取、替换、查找子串函数
截取子串s.substr(pos, n) 截取s中从pos开始(包括0)的n个字符的子串,并返回s.substr(pos) 截取s中从从pos开始(包括0)到末尾的所有字符的子串,并返回替换子串s.replace(pos, n, s1) 用s1替换s中从pos开始(包括0)的n个字符的子串查找子串s.find(s1) 查找s中...原创 2018-12-08 13:27:00 · 356 阅读 · 2 评论 -
C++ regex 正则表达式的使用
在C++中,有三种正则表达式可以选择使用:C++11 regex、POSIX regex 和 boost regexC++ regex函数有3个:regex_match、regex_search 、regex_replaceregex_matchregex_match是正则表达式匹配的函数,下面以例子说明// regex_match example#include &amp;lt;iostrea...原创 2018-12-07 23:55:02 · 522 阅读 · 0 评论 -
C++ rapidjson使用示例
rapidjson使用示例文章目录rapidjson使用示例本示例所用环境示例代码与注释如果想深入学习rapidjson工具,官方文档肯定是必须看一看的本示例所用环境引擎版本:cocos2d-x 3.10示例代码与注释说明:我是直接使用原本引擎创建了新的cocos2dx工程,然后略微修改了HelloWorldScene.cpp中的代码。为了方便,使用rapidjson生成json串,...原创 2018-12-07 21:46:43 · 1378 阅读 · 0 评论 -
解法汇总:找数组中前K大(小)个数
查找数组中前K大个数解法汇总原创 2017-09-04 01:00:41 · 888 阅读 · 0 评论