摘要: 懒汉模式:在使用时候才创建出对象 在多线程时,会出现安全问题 class Test{ 2 public: 3 static Test* getInstance{ 4 if(m_test==NULL){ 5 m_test=new Test(); 6 } 7 return m_test; 8 } 9 p 阅读全文
posted @ 2024-05-08 14:48 iu本u 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 先定义一个计算内存的结构体,创建一个这样的结构体作为全局变量,然后重载new和delete运算符,每次对内存操作时都会跟踪内存分配 在main函数的最后加上CrtDumpMemoryLeaks(),可以定位到内存没有被释放的位置在哪里,有多大的内存 阅读全文
posted @ 2024-04-26 13:16 iu本u 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 如果需要析构函数,就一定要复制构造函数和拷贝赋值操作符 为了支持移动语义,又加入了移动复制构造函数和移动拷贝赋值操作符【90】stdmove与移动赋值操作符_哔哩哔哩_bilibili 阅读全文
posted @ 2024-04-25 15:59 iu本u 阅读(5) 评论(0) 推荐(0) 编辑
摘要: #include<iostream> #include<array> template<typename T,size_t S> class Array { private: T m_data[S]; public: constexpr int Size()const { return S; } T 阅读全文
posted @ 2023-11-09 20:06 iu本u 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 三法则:如果需要构造函数一定要有复制构造函数和赋值构造函数 五法则:为了支持移动语义有增加了移动构造函数和移动赋值运算符 需要区分移动构造函数和移动赋值运算符;完全取决于所赋值的对象开始的值有没有先构造。 使用移动语义去重写复制构造函数会让它变成窃取资源是原来的对象资源便空 阅读全文
posted @ 2023-11-09 19:02 iu本u 阅读(11) 评论(0) 推荐(0) 编辑
摘要: 为了避免复制构造函数复制类而占用内存,使用移动语义去潜复制。 move(类名 other),重写复制构造函数,指的是类中初始化成员变量时可以使用move,其他时候使用的是右值引用 或者用右值引用传参重写复制构造函数:类名&& 使用std::move去代替右值引用的参数赋值 阅读全文
posted @ 2023-11-09 18:41 iu本u 阅读(15) 评论(0) 推荐(0) 编辑
摘要: 左值是存在地址存储的值,右值是一个临时值 左值引用只能赋值为左值,除非加const 右值引用是加“&&” 阅读全文
posted @ 2023-11-08 15:36 iu本u 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 在原来的string操作中,大多数都是复制string进行操作,如:substr()、string&传参。它们都会复制占用额外内存。 使用std::string_view犹如只是对它的视图映射进行处理,有一个指针指向一个起始位置,然后会有一个size参数去决定这个指针的移动步数。 #if 1 Pri 阅读全文
posted @ 2023-10-30 19:34 iu本u 阅读(45) 评论(0) 推荐(0) 编辑
摘要: 回溯模板: for(start状态:选择列表){ path.push_back(选择); BackTrack(遍历层数); path.pop_back(); } 避免深度方向的重复选择:每次遍历时候层数+1,且start=这时层数 避免广度方向的重复选择:那么start状态应该等于层数 想下一层选择 阅读全文
posted @ 2023-10-30 16:25 iu本u 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 它可以将可能存在或者不存在的内容以合适的方式返回,当返回的是空文件时,可以使用_.value_or("初始值") std::optional<std::string> data=OpenFileAsstring("data.txt"); string value=data.value_or("Not 阅读全文
posted @ 2023-10-23 18:58 iu本u 阅读(5) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示