- 博客(9)
- 资源 (3)
- 收藏
- 关注
原创 C++11 你真的会用迭代器(iterator)么?
C++ STL提供了丰富的标准容器(Container)对象(vector,array,queue,list,set,unordered_map/set…),让我们可以根据需求选择不同的容器管理各种类型的数据。说到使用容器,不用迭代器(iterator)是不可能的,所有的容器对象都根据容器的特点都提供了类似但不同的iterator,用于访问容器中的数据。迭代器(iterator)循环一般来说,如果要
2015-11-22 09:35:15 10510
原创 C++11 为自定义容器实现标准的forward迭代器
当前我的一个项目是基于C++11为基础开发的,在项目中需要用到哈希表来保持数据,C++11本身已经提供了丰富的容器类型(array,list,hashmap….vector),但因为项目的特殊需要不能使用C++11现成的unordered_map容器。无奈所以我只能自己根据项目需要写了一个哈希表的模板类–HashTableAbstract–也就是自定义容器。 然后问题了,为了让这个自定义的容器也能
2015-11-21 18:29:32 4192
原创 C++11 利用const_cast和type_traits修改类成员常量的通用模板函数
对于const定义的常量,不能直接修改它的值,这是这个限定符最直接的表现。但是某种情况下我们突破const限定修改其内容,C++11中可以使用const_cast转换符是用来移除变量的const限定符。关于const_cast的用法网上可以找到很多很多,基本的原理就是通过指向常量的指针来修改常量的内容,就像下面这样:const int c = 21;//下面三行代码实现修改常量cconst in
2015-11-21 11:38:32 1624 1
原创 C++11 右值引用简化代码的例子
C++11中引入了右值引用的概念 这里不再解释什么是右值引用,用一个例子说明右值引用对代码带的一些简化效果 下面是将一个方法分为两个版本,第一个方法中newNode使用右值引用参数newNode,第二个则是左值引用的 /* 右值引用版本 */ HashNode& insertNode(HashNode&& newNode) { //do something }
2015-11-20 18:52:47 1375
原创 纯C++11标准写类topk算法(不稳定排序)类模板
topk排序是指从N个数据中找出最大/小的前K个数据,并以升/降序排列,本文讨论的topk与这个定义稍有差别(所以叫类topk算法): 从N个数据中将临时计算结果t满足阀值T(大于或小于T)的前K个数据找出,并以升/降序排列(不满足阀值的t不允许占用内存)。 比如,从今年中考成绩中挑出总成绩(总成绩是根据各科成绩加总临时计算的结果,不允许保存)大于520分的前20个学生。如果有50个大于5
2015-11-20 15:15:02 1446 1
原创 C++11:unique_ptr 自己定义类似make_shared的make_unique模板函数
C++11中的智能指针分为共享型的shared_ptr和独占型的unique_ptr,C++11提供了make_shared函数来创建shared_ptr指针,使用起来更方便,有了make_shared函数,就可以完全摆脱new操作了,可以写出完全没有new/delete的程序。 但是unique_ptr却不同,unique_ptr不像shared_ptr可以通过make_shared方法来创建智
2015-11-16 16:19:47 4036 1
原创 C++11实现模板化(通用化)RAII机制
什么是RAII?RAII(Resource Acquisition Is Initialization),也称直译为“资源获取就是初始化”,是C++语言的一种管理资源、避免泄漏的机制。 C++标准保证任何情况下,已构造的对象最终会销毁,即它的析构函数最终会被调用。 RAII 机制就是利用了C++的上述特性,在需要获取使用资源RES的时候,构造一个临时对象(T),在其构造T时获取资源,在T生命期控
2015-11-15 10:04:58 11066 2
原创 c++11单实例(singleton)初始化的几种方法(memory fence,atomic,call_once)
单实例模式(singleton)下要求一个类只能有一个实例,如何保证只创建一个实例?类的静态成员延迟初始化要求静态成员只能被初始化一次,也有类似的问题。 在单线程环境下,这事儿很好办。Singleton* Singleton::getInstance() { if (m_instance == nullptr) { m_instance = new Singleton;
2015-11-11 09:26:13 23356 7
原创 无锁编程:c++11基于atomic实现共享读写锁(写优先)
在多线程状态下,对一个对象的读写需要加锁,基于CAS指令原子语句可以实现高效的线程间协调。 以下代码实现了一个资源锁: readLock/Unlock 实现共享的读取锁,MAX_SHARE_COUNT用于限制同时读取的线程数, writeLock/Unlock 实现独占的写入锁,同时只允许一个线程写入,当写入线程执行时,所有的读取线程都被阻塞。locck/unlock语句允许嵌套,
2015-11-04 18:25:52 17044 3
CMake脚本在ultraedit中的语法高亮支持
2023-06-08
erpcgen-windows-x86_64.zip
2020-09-17
windows下MSVC兼容的dirent.h
2016-03-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人