随笔分类 - c++
摘要:template<typename T> class Singleton { public: static T& getInstance() { static T t; return t; } Singleton(const Singleton&) = delete; Singleton& oper
阅读全文
摘要:``` //atomic3.cpp 使用CAS操作实现一个无锁栈 #include #include template class lock_free_stack { private: struct node { T data; node* next; node(const T& data) : d
阅读全文
摘要:``` #include #include void* threadFunction(void* arg) { // 线程函数逻辑 // ... return nullptr; } int main() { pthread_t thread; pthread_attr_t attr; // 初始化线
阅读全文
摘要:std::default_random_engine generator; //连续均匀分布 std::uniform_real_distribution<double> xy_rand(-4, 4.0); double a = xy_rand(generator); //高斯分布 std::nor
阅读全文
摘要:1.简介 关联容器支持高效的关键字查找和访问,两个主要的关联容器类型是map和set。 map中的元素是一些关键字和值,关键字起索引作用 set中只包含一个关键字。 2.汇总 有序容器在插入时,会自动插入到合适的位置,使整个集合有序 3.分类使用 1.有序容器 set<int> a = {1,2,9
阅读全文
摘要:1.bind函数 网络编程中, 经常要使用到回调函数。 当底层的网络框架有数据过来时,往往通过回调函数来通知业务层。 这样可以使网络层只专注于 数据的收发, 而不必关心业务 在c语言中, 回调函数的实现往往通过函数指针来实现。 但是在c++中 , 如果回调函数是一个类的成员函数。这时想把成员函数设置
阅读全文
摘要:首先, C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式). class CxString // 没有使用expli
阅读全文
摘要:1.目的: 派生类继承自基类。使用指针或引用访问派生类对象时,指针或引用本身所指向的类型可以是基类而不是派生类。如果派生类覆盖了基类中的方法,通过上述指针或引用调用该方法时,可以有两种结果: 调用到基类的方法:非虚函数; 调用到派生类的方法:虚函数。 注意: 在基类的成员函数声明前加上关键字virt
阅读全文
摘要:1.继承和派生: 继承和派生是同一个过程从不同角的度看 保持已有类的特性而构造新类的过程称为继承。 在已有类的基础上新增自己的特性而产生新类的过程称为派生。 被继承的已有类称为基类(或父类)。 派生出的新类称为派生类(或子类)。 直接参与派生出某类的基类称为直接基类。 基类的基类甚至更高层的基类称为
阅读全文
摘要:1.前言 C里面的四个智能指针: auto_ptr, unique_ptr,shared_ptr, weak_ptr 其中后三个是C11支持,并且第一个已经被C++11弃用。 2.简介 智能指针主要用于管理在堆上分配的内存,它将普通的指针封装为一个栈对象。当栈对象的生存周期结束后,会在析构函数中释放
阅读全文
摘要:1.简介 除了固定大小的array外,其他容器都提供高效、灵活的内存管理 string 和 vector是连续内存,由下标访问非常快速,但是在中间删除和添加元素非常耗时,在一次插入或删除后,需要移动所有元素来保持连续存储 list 和 forward_list是添加和删除非常快速,但是,不支持元素的
阅读全文
摘要:1.等待事件 std::mutex m; void wait() { std::unique_lock<std::mutex> lk(m); lk.unlock(); std::this_thread::sleep_for(std::chrono::millisenconds(100));//休眠1
阅读全文
摘要:1.初始化 2.string的一些操作 + empty:返回一个布尔值来判断是否非空 + size:返回对象的长度,无符号整形 + 关系运算:== = 80 ) cout
阅读全文
摘要:1.std::mutex类 1.构造函数,std::mutex不允许拷贝构造,也不允许 move 拷贝,最初产生的 mutex 对象是处于 unlocked 状态的。 2.lock(),调用线程将锁住该互斥量。线程调用该函数会发生下面 3 种情况:①如果该互斥量当前没有被锁住,则调用线程将该互斥量锁
阅读全文
摘要:void function(); void function1(); std::thread t1( function ); //启动一个新线程t1与function关联 std::thread t2 = std::move(t1); //将t1限行的转移给t2 t1 = std::thread(
阅读全文
摘要:#include <iostream>#include <thread>#include <windows.h> using namespace std;void switch_ab (int &a, int &b) //参数是引用可更改 //void switch_ab (int &a, int
阅读全文
摘要:#include <iostream>#include <thread>#include <unistd.h>void hello(){ while(1) { std::cout << "hello world" << std::endl; for(int i=0;i<999999999;i++);
阅读全文
摘要:1.因为pthread不是C标准库,需要链接 2.在CMakeLists.txt里添加: FIND_PACKAGE(Threads REQUIRED) TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${CMAKE_THREAD_LIBS_INIT})
阅读全文
摘要:1.顶层const表示指针本身是一个常量。 int i = 0; int *const p1 = &i; const int ci = 42; 代表指针指向的地址是不能变的。 2.底层const表示指针指向的对象是一个常量。 const int ci = 2; const int *p2 = &ci
阅读全文
摘要:1.+重载 class Time { private: int num; public: Time operator+(const Time & t) const; }; Time Time::operator+(const Time & t) const { Time sum; sum.num =
阅读全文

浙公网安备 33010602011771号