随笔分类 -  Language:C++

摘要:关于c++、go、nodejs、python的计算性能测试,结果令人惊讶 阅读全文
posted @ 2021-12-24 17:29 绿色冰点 阅读(2432) 评论(46) 推荐(1) 编辑
摘要:在标准C++中,枚举类型不是类型安全的。枚举类型被视为整数,这使得两种不同的枚举类型之间可以进行比较。C++03 唯一提供的安全机制是一个整数或一个枚举型值不能隐式转换到另一个枚举别型。 此外,枚举所使用整数类型及其大小都由实现方法定义,皆无法明确指定。 最后,枚举的名称全数暴露于一般范围中,因此C 阅读全文
posted @ 2018-12-25 16:02 绿色冰点 阅读(46667) 评论(0) 推荐(1) 编辑
摘要:从C++11开始,我们可以使用以下形式通过常量字符串构造自定义类型, 比如: Output: 在std::literals::chrono_literals的实现用,也用了类似的手段: 实现如下: 例子: Output: 阅读全文
posted @ 2018-12-20 10:52 绿色冰点 阅读(2869) 评论(0) 推荐(1) 编辑
摘要:std::call_once的作用是很简单的, 就是保证函数或者一些代码段在并发或者多线程的情况下,始终只会被执行一次。比如一些init函数,多次调用可能导致各种奇怪问题。 给个例子: Output: 阅读全文
posted @ 2018-12-13 00:39 绿色冰点 阅读(12405) 评论(0) 推荐(0) 编辑
摘要:这里主要介绍std::unique_lock与std::lock_guard的区别用法 先说简单的 一、std::lock_guard的用法 std::lock_guard其实就是简单的RAII封装,在构造函数中进行加锁,析构函数中进行解锁,这样可以保证函数退出时,锁一定被释放。 简单来说,就是防止 阅读全文
posted @ 2018-12-13 00:28 绿色冰点 阅读(4325) 评论(0) 推荐(0) 编辑
摘要:C++11中,针对顺序容器(如vector、deque、list),新标准引入了三个新成员:emplace_front、emplace和emplace_back,这些操作构造而不是拷贝元素。这些操作分别对应push_front、insert和push_back,允许我们将元素放置在容器头部、一个指定 阅读全文
posted @ 2018-12-12 23:09 绿色冰点 阅读(13431) 评论(0) 推荐(3) 编辑
摘要:C++本身有引用(&),为什么C++11又引入了std::ref(或者std::cref)? 主要是考虑函数式编程(如std::bind)在使用时,是对参数直接拷贝,而不是引用。如下例子: Output: 上述代码在执行std::bind后,在函数f()中n1的值仍然是1,n2和n3改成了修改的值。 阅读全文
posted @ 2018-12-12 23:04 绿色冰点 阅读(4282) 评论(0) 推荐(1) 编辑
摘要:先说明一点:std::asyanc是std::future的高级封装, 一般我们不会直接使用std::futrue,而是使用对std::future的高级封装std::async。 下面分别说一下。 一、std::async基本用法 std::future可以从异步任务中获取结果,一般与std::a 阅读全文
posted @ 2018-12-12 23:02 绿色冰点 阅读(29443) 评论(3) 推荐(6) 编辑
摘要:目前,我们常用的配置文件格式有XML和ini, XML层次分明,但其缺点就是写起来太繁杂,对一些关键字如<>之类的处理比较特殊。而ini呢,配置不够灵活,只有简单的段-键-值模式,对于一些多层结构的配置,或者一些列表类型的配置,就显得力不从心了,往往需要编码人员自己分割字符串。 Lua脚本非常简洁清 阅读全文
posted @ 2012-11-21 12:00 绿色冰点 阅读(10715) 评论(7) 推荐(4) 编辑
摘要:const用法详解 面向对象是C++的重要特性. 但是c++在c的基础上新增加的几点优化也是很耀眼的 就const直接可以取代c中的#define 以下几点很重要,学不好后果也也很严重 const 1. 限定符声明变量只能被读 const int i=5; int j=0; ... i=j; //非 阅读全文
posted @ 2009-05-21 10:54 绿色冰点 阅读(337) 评论(0) 推荐(0) 编辑
摘要:#include<stdio.h> struct a { char no[10]; int p; long int pp; unsigned int ppp; char x; float y; double h; }xy; void main() { printf("struct a: %d /n" 阅读全文
posted @ 2009-02-21 13:50 绿色冰点 阅读(402) 评论(0) 推荐(0) 编辑
摘要:问题源自一段简单的代码: 在以上代码中,如果你输入:abcd,那么如你所望,你会看到"正确"的输出"c"。但是会有错误提示出现: Debug Error!Program: test.exeDAMAGE: after Normal block(#64) at 0x003429f8更离奇的是,如果将代码 阅读全文
posted @ 2008-11-05 11:25 绿色冰点 阅读(299) 评论(0) 推荐(0) 编辑
摘要:static 声明的变量在C语言中有两方面的特征: 1)、变量会被放在程序的全局存储区中,这样可以在下一次调用的时候还可以保持原来的赋值。这一点是它与堆栈变量和堆变量的区别。 2)、变量用static告知编译器,自己仅仅在变量的作用范围内可见。这一点是它与全局变量的区别。Tips: A.若全局变量仅 阅读全文
posted @ 2008-10-29 16:43 绿色冰点 阅读(729) 评论(0) 推荐(0) 编辑