C++ λ表达式lambda expression

看一个求余函数的例子: auto mod = [](int i,int j){return i%j;}; 一、lambda表达式 [capture list] (parameter list) -> return type { function body} 1 captu...

2019-05-13 10:27:46

阅读数 30

评论数 0

C++日期获取与输出

代码如下: #include <ctime> #include <iomanip> #include <chrono> using std::chrono::system_clock; std::time...

2019-05-12 21:06:31

阅读数 89

评论数 0

让C++智能指针与原始指针和谐相处

开发中一直萦绕我的一个困惑是:智能指针和原始指针什么场景怎么用? 现在终于有了答案: 1 两种指针的天赋:智能指针天生负责对象生命期管理;所以生命期对象全都由unique_ptr和shared_ptr来管理。 2 两种指针的天赋:原始指针天生不负责对象生命周期管理;所以使用动态对象均通过原始...

2019-04-03 14:26:53

阅读数 288

评论数 0

C++11复制控制

复制控制的内容 复制(拷贝)控制:拷贝构造、拷贝赋值、移动 构造、移动赋值、析构 一般来说,用户需要定义的场景是: 1 析构函数 => 拷贝 + 赋值 需要析构的类也基本上需要拷贝和赋值 2 拷贝<=>赋值 需要拷贝的类...

2019-03-11 09:00:00

阅读数 35

评论数 0

std::wstring_convert处理UTF8

#include <iostream> #include <string> #include <locale> #include <codec...

2018-12-20 23:20:41

阅读数 172

评论数 0

C++异常的标准用法

C++标准本身提供的异常类完全能够满足任何规模程序的使用。 其机制如下: 1 exception a)C++提供了标准异常类exception,这个类是所有标准异常的基类,其析构函数为虚函数 b)提供统一接口 const char* what() const 来作为各种标准异常对外的唯一接...

2018-10-24 11:01:19

阅读数 157

评论数 0

C++11 std::bind std::ref

std::bind 总是拷贝其参数,但是,调用者可以使用std::ref来实现传递引用给std::bind,翻译自《Effective Modern C++:改善C++11和C++14的42个具体做法》 原文如下:std::bind always copies its arguments, bu...

2018-04-10 22:19:22

阅读数 301

评论数 0

C++11计时器mt19937

官方示例:点击打开链接之前自己封装的boost版本:点击打开链接根据上面两者结合封装的版本:#pragma once #include <chrono> using namespace std; class CTimer { public: CTi...

2018-04-02 21:43:45

阅读数 225

评论数 0

Zobrist Hash算法的基础:按位异或运算的性质

用途 Zobrist Hash算法是各类棋类程序中判断历史局面是否存在的算法。 算法基础 该算法的的基础利用了按位异或运算的如下性质:A^B^B = A C++代码示例 // mersenne_twister_engine constructor #include ...

2017-06-14 21:38:25

阅读数 2141

评论数 0

C++随机数生成器mt19937生成随机数的用法

下面的代码来自官方示例:// mersenne_twister_engine constructor #include <iostream> #include <chrono> #include &am...

2017-05-23 19:30:24

阅读数 5465

评论数 0

《C++ Primer》 shared_ptr章节示例小程序:文本文件单词搜索程序 V2.0

看完了这一节,就有想自己实现一下的感觉。 主要是体验一下作者对交互类的设计思路,以及shared_ptr运用的正统方法和小的细节。 按照书上的实现代码如下: #include #include #include #include #include #include #include ...

2016-12-08 14:08:51

阅读数 401

评论数 0

C++移动语义与右值引用完美展示与原理介绍 更新于2018-05-01

C++移动语义移动语义顾名思义是内存数据的移动,实际就是内存数据所有权的转移。目的:1 函数可以直接返回值类型的对象而不发生对象拷贝2 除了函数返回值,自定义类型的普通赋值也可以走移动语义,目的相同:减少内存开辟和释放(RapidJson库就是这种情况)例如:vector<i...

2016-08-23 18:38:22

阅读数 891

评论数 0

C++11智能指针之unique_ptr

转载:点击打开链接

2016-05-04 16:56:22

阅读数 513

评论数 0

C++11 function (2017-05-05 第2次修改)

function+bind可以实现按值传递函数对象,从而消灭多态,消灭回调。 参考:《C++ Primer 第五版中文版》《Linux 多线程服务端编程》 代码: #include #include #include #include using namespace std; int a...

2016-03-31 17:56:08

阅读数 1114

评论数 0

设计模式(四)std::function接口编程彻底取代抽象工厂和工厂方法

  抽象工厂Abstract Factory 意图:用工厂类的不同成员函数来返回不同类型的对象。这些不同的对象往往是有着共同的基类,最终是想利用多态。而多态已经被function+bind取代,所以这个模式没啥意义!   特点:使用智能指针获取对象,而不是暴露原始指针。 代码:   ...

2016-03-16 11:44:57

阅读数 2440

评论数 0

weak_ptr基本用法

weak_ptr主要是配合share_ptr来实现应用计数,同时不会发生循环引用。 参考:http://www.cnblogs.com/TianFang/archive/2008/09/20/1294590.html #include "boost/smart_ptr.hpp"...

2016-03-13 14:41:37

阅读数 2323

评论数 0

C++11的字符串与数值间的类型转换:to_string() stoi stol stoul stoll stof stod stold

知道了C++的I/O设施之后,这些就变的很简单了。如果你经常使用,时间长了就会有感觉。这个事情是多此一举吗?就当是练习吧,知道原理之后,你会觉得用起来更舒畅,更喜欢C++了。 #include #include #include #include #include #include u...

2014-11-17 09:08:47

阅读数 6801

评论数 0

C++内存管理利器shared_ptr V2.0

此只能指针已经被纳入C++11,只因它实在是我们太需要它了! 如下的这些方面是我们需要它的理由 (1)引用计数让你摆脱delete的使用,只要有一个指针对象没有被析构,管理的对象就不会被析构,所以你可以按值传递给函数,按值从函数返回 (2)提供了变参工厂函数:make_shared<T>...

2014-03-02 20:41:42

阅读数 1472

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭