随笔分类 -  C++11

摘要:1. tuple 基本语法 stdtuple 是类似 pair 的模板。每个 pair 的成员类型都可不相同,但每个 pair 都恰好有两个成员。stdtuple 类型的成员类型也不可相同,另外一个 std::tuple 可以有任意数量的成员。 但我们希望 将一些数据组合成单一对象,但又不想麻烦地定 阅读全文
posted @ 2021-04-16 14:37 洛克十年 阅读(1188) 评论(0) 推荐(1)
摘要:1. 常量表达式 1.1 运行时常量性和编译时常量性 //运行时常量 const int getConst(){return 1;} ​ 大多数情况下, const 描述的都是一些 “运行时常量性”的概念,即具有运行时数据的不可更改性。不过有时候我们需要的却是编译时期的常量性,这是 const 无法 阅读全文
posted @ 2020-08-19 09:21 洛克十年 阅读(389) 评论(0) 推荐(0)
摘要:1. 强类型枚举 //c++11的强类型枚举可以指定底层基于的基本类型,我们可以避免编译器不同而带来的不可移植性。 //另外,设置较小的基本类型也可以节省内存空间。 enum class C : char {C1 = 1, C2 = 2}; enum class D : unsigned int { 阅读全文
posted @ 2020-08-01 17:10 洛克十年 阅读(137) 评论(0) 推荐(0)
摘要:1. auto 关键字的限制 ​ auto 虽然功能很强大,但是也不是万能的,受制于语法的二义性,或者是实现的困难性, auto 往往也会有使用上的限制。 #include <vector> //1.auto 函数参数,无法通过编译 void fun(auto x = 1) {} struct st 阅读全文
posted @ 2020-07-31 20:50 洛克十年 阅读(169) 评论(0) 推荐(0)
摘要:8. 显式转换操作符 ​ C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显式的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式)。 class TestString { 阅读全文
posted @ 2020-07-23 17:53 洛克十年 阅读(180) 评论(0) 推荐(0)
摘要:1. 继承构造函数 struct A { A(int i){} A(double d, int i){} A(float f, int i, const char* c){} }; struct B : public A { using A::A; //继承构造函数 virtual void ext 阅读全文
posted @ 2020-07-18 18:27 洛克十年 阅读(178) 评论(0) 推荐(0)
摘要:1. long long 整型 ​ c++ 中,在进行隐式类型转换时,一般按照低等级整型转换成高等级整型(长度越大的等级越高、相同大小的有符号类型和无符号类型的等级相同),有符号的转换为无符号。 2. 静态断言 ​ 在 c++ 中,标准在 <cassert> 或者 <assert.h> 头文件中为程 阅读全文
posted @ 2020-07-18 14:53 洛克十年 阅读(168) 评论(0) 推荐(0)
摘要:#pragma once #pragma execution_character_set("utf-8") #include <iostream> using namespace std; class Reference { public: Reference() { cout << "Refere 阅读全文
posted @ 2020-06-20 17:40 洛克十年 阅读(174) 评论(0) 推荐(0)
摘要:1. 线程池DLL工程 ​ defs.h中定义了导入导出符、单元测试相关宏、错误码等。 //defs.h #ifndef __ROCK_THREAD_POOL_DEFS_H__ #define __ROCK_THREAD_POOL_DEFS_H__ #if defined WIN32 || defi 阅读全文
posted @ 2020-06-19 16:17 洛克十年 阅读(166) 评论(0) 推荐(0)
摘要:1.半同步半异步线程池 ​ 半同步半异步线程池共分为三层,第一层是同步服务层,它处理来自上层的任务请求。上层的请求可能是并发的,这些请求不是马上就被处理,而是将这些任务放到一个同步排队层中,等待处理。 ​ 第二层是同步排队层,来自上层的任务请求都会被加到排队层中等待处理。 ​ 第三层是异步服务层,这 阅读全文
posted @ 2020-06-19 11:11 洛克十年 阅读(210) 评论(0) 推荐(0)
摘要:~~~c++ pragma once include include include include include include include include include include include using namespace std; using namespace chrono 阅读全文
posted @ 2020-04-18 14:28 洛克十年 阅读(169) 评论(0) 推荐(0)
摘要:~~~c++ pragma once include include include include include include include include include include using namespace std; using namespace chrono; typede 阅读全文
posted @ 2020-04-18 09:59 洛克十年 阅读(245) 评论(0) 推荐(0)
摘要:在接口类中使用智能指针时,如果要通过智能智能输出在内动态申请的内存空间的引用。 类内不维护内存空间的引用,只能使用shared_ptr;类内维护了内存空间的引用,则可以使用weak_ptr。 ~~~c++ include include using namespace std; struct MyS 阅读全文
posted @ 2020-04-17 11:40 洛克十年 阅读(224) 评论(0) 推荐(0)
摘要:1. 条件变量 ​ 多线程编程中,等待由另一个线程触发一个时间的最基本机制是条件变量。从概念上说,条件变量与某些事件或其他条件相关,而且一个或多个线程可以等待该条件被满足。当某个线程已经确定条件得到满足,它就可以通知一个或多个正在条件变量上进行等待的线程,以便唤醒它们并让它们继续处理。 运行结果如下 阅读全文
posted @ 2019-11-14 09:19 洛克十年 阅读(429) 评论(0) 推荐(0)
摘要:1. Hash Table ​ 我们都知道,二叉树、红黑树等数据结构,它们的查找都是先从根节点开始查找,从节点取出数据或者索引与查找值进行比较。 ​ 那么,有没有一种函数H,根据这个函数和查找关键字 Key,可以 直接确定查找值所在的位置 ,而不需要一个个比较。这样叫“预先知道” Key 所在的位置 阅读全文
posted @ 2019-10-23 14:53 洛克十年 阅读(201) 评论(0) 推荐(0)