C++11
Sir_wang
朝闻道,夕可死矣!为了成为IT高手,为了挽回我失去的青春,也为了我亲爱的家人,下决心刻苦学习编程知识,虽九死而不悔! 金头盔飞行员蒋佳冀:知道了不行,熟悉也不够,要真正进入潜意识,成为条件反射才行。
展开
-
对命令模式的理解
命令模式更合适的理解是安排就职模式:图中通过setPersion将人员(命令,也是具体的干活儿对象)安排到岗位,假设我们有很多人(命令队列)在白板这里,我们把具体绘制图形的类实例封装起来(比如绘制正方形、椭圆等),通过类似setPerson的接口设置进去,然后调用excute执行具体的绘制另外,在这里可以用同样的方式设置回调...原创 2021-03-04 23:50:39 · 230 阅读 · 1 评论 -
C++11 条件变量及时间点的使用
#ifndef DOMAIN_H#define DOMAIN_H#include <iostream>#include <thread>#include <mutex>#include <condition_variable>#include <atomic>class DoMain{public: DoMain(); ~DoMain(); void threadTimerHandle();.原创 2021-01-06 09:16:12 · 334 阅读 · 0 评论 -
很多个回调函数时可采用的办法
typedef struct _CallBackFuns_{ void* f; void* user_data; }CallBackFuns; void set_callback(const std::string& tag, void* callback, void* data) { CallBackFuns fun; fun.f = callback; fun.user_data...原创 2020-10-24 15:50:46 · 362 阅读 · 0 评论 -
C++11的explicit关键字
C++11代码中最好带上explicit关键字,explicit关键字的作用是:C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式).关键字:构造函数只有一个参数(当有多个参数时,自动会被指明,就不存在这个情况) 构造函数是显式的而不是隐式的为了防止以下情况的出现:class A{ public: ..原创 2020-09-19 23:50:10 · 254 阅读 · 0 评论 -
C++11的单例模式
C++11中的单例模式分为懒汉模式和饿汉模式。区别:懒汉模式:延迟创建,在主动获取对象实例的时候才去创建对象。缺点:多线程时需要安全处理。饿汉模式:程序初始化即创建饿汉模式安全写法: static Singleton* GetInstance() { if(singleton_ == nullptr) { std::lock_guard<std::mutex> lock(Singleton::m_lock); .原创 2020-09-19 23:31:14 · 649 阅读 · 0 评论 -
C++11 时间计算
#pragma once #include <chrono> class ElapsedTimer{public: ElapsedTimer() : m_begin(std::chrono::high_resolution_clock::now()) {} void reset() { m_begin = std::chrono::high_resolution_clock::now(); } //ns int64_t elapsed_ns() const { ret.原创 2020-09-18 08:33:19 · 392 阅读 · 0 评论 -
记一次bug
bug是这样的:两个线程访问同一个对象,类似于生产者、消费者模型消费者给出的是一个智能指针,生产者给出的是裸指针,生产出来的数据通过本地一个智能指针的cache保存在本地,以供消费者使用。开始每次生产者生产出来的数据直接构造智能指针,缓存在本地;消费者获取的时候,直接赋值给消费者,这样做的目的是:尽量减少数据的拷贝,特别是视频数据这样的,在640X480分辨率下,一切都正常。然而,当我把分辨率调节到1920X1080时,会出现崩溃,也可视频根本渲染不出来,是个白屏。后来灵机一动,如果把数据完完全原创 2020-07-25 23:46:30 · 157 阅读 · 0 评论 -
C++11 mutable
C++11中的mutable是用来修改const函数中的不可修改类成员这一缺陷的:class Log{public: // void print(const std::string& str) const { printf("%s", str_cstr()); //统计输出次数 printNums++; }private: //这里必须声明为mutable mutable int p原创 2020-06-22 07:48:08 · 454 阅读 · 0 评论 -
C++11 宽窄字符转换
//wstring 转 string typedef std::wstring_convert<std::codecvt<wchar_t, char, std::mbstate_t>> CONVER; std::wstring str = L"中国人"; std::wstring_convert<std::codecvt<wchar_t, char, std::mbstate_t>> converter(new std::cod...原创 2020-06-21 22:05:51 · 572 阅读 · 0 评论 -
std::promise的使用
std::promise用于多线程间交换数据:void test1(std::promise<int> &p){ //while (1) { std::cout<< "test1"; std::chrono::system_clock t; std::cout << std::thi...原创 2020-04-10 23:21:09 · 191 阅读 · 0 评论 -
C++11 thread
C++ thread线程(二)thread 第二种构造方式:类函数作为参数:class Feab{public: explicit Feab(int var):v(var) { } void FeabFunction(int v) { cout << v << endl; }priva...原创 2020-04-10 21:28:49 · 151 阅读 · 0 评论 -
linux对C++11多线程的支持
#include <iostream>#include <thread>#include <future>using namespace std;double calc(double v){ cout << "calc: " << std::endl; cout << this_thread:...原创 2020-04-10 21:15:25 · 202 阅读 · 0 评论