摘要: 头文件:#include <memery> 首先,对于智能指针,它是无法隐式构造的,不管是unique_ptr,还是shared_ptr,或者是weak_ptr。 即,如果想要初始化一个智能指针,得使用传入参数的形式: unique_ptr<int> up(new int); 为什么需要使用智能指针 阅读全文
posted @ 2023-09-22 16:51 C111-CR 阅读(74) 评论(0) 推荐(0)
摘要: template<class T> class Shared_pointer{ private: ssize_t *_ref_count; // 计数器的指针 T *_ptr; // 元素的指针 std::mutex *mtx; // 计数器的锁 public: explicit Shared_po 阅读全文
posted @ 2023-09-22 16:51 C111-CR 阅读(24) 评论(0) 推荐(0)
摘要: 引用折叠 template <class T> void func(T && arg); 若一个右值引用(&&)参数被一个左值或左值引用初始化,那么引用将折叠为左值引用。(即:T&& & –> T&) int a = 1; func(a); // func()中 参数arg 变成 int &类型 i 阅读全文
posted @ 2023-09-22 16:46 C111-CR 阅读(208) 评论(0) 推荐(0)
摘要: ## 运算符重载 - 在类中的函数进行重载(成员函数) 运算符重载用于重新定义运算符的作用,使用函数名称 `operatorOP`作为函数名,其中`OP`为具体的运算符(如`operator+`) ```c++ class Time{ Time operator+(const Time &t); } 阅读全文
posted @ 2023-08-08 10:41 C111-CR 阅读(72) 评论(0) 推荐(0)
摘要: ## const - 基础用法 用于声明一个不可再被修改的变量: ```c++ const int num = 17; num = 33; // Invalid,会报错 ``` - 用于指针 首先,如果将一个指针用`const`声明为常量指针,那么这个指针的指向将不能被改变。但可以通过这个指针来修改 阅读全文
posted @ 2023-08-08 10:40 C111-CR 阅读(30) 评论(0) 推荐(0)
摘要: ## 反转单向链表 时间复杂度:O(N) 空间复杂度:O(1) ```c void reverse_list (node** head_ptr) { node* prev = NULL; node* curr = *head_ptr; node* next = NULL; while (curr ! 阅读全文
posted @ 2023-08-08 10:39 C111-CR 阅读(36) 评论(0) 推荐(0)
摘要: ## `std::vector.push_back()` 使用push_back()函数时,在不用扩增容量的情况下,时间复杂度是O(1); 但如果需要扩增容量,会将旧vector中所有元素复制到新的内存空间中,时间复杂度是O(n)。 假定扩增后的容量为原来的m倍 假如从一个空vevtor开始,需要插 阅读全文
posted @ 2023-08-08 10:37 C111-CR 阅读(592) 评论(0) 推荐(0)
摘要: ## 右值引用 - 左值:可以被取地址的变量或值 - 右值:无法被修改,无法取地址的值。一般为临时变量。 - 左值引用: - 常引用,只能指向左值 - 或者通过 `const` 的方式指向一个右值 ```c++ const int & a = 17; ``` 所以,函数形参定义为`const typ 阅读全文
posted @ 2023-08-03 20:53 C111-CR 阅读(127) 评论(0) 推荐(0)
摘要: `extern "C"`是C++中的一种用法(无法在C语言中使用),其作用是 修饰一段代码,将其用C语言的方式进行编译。 ###### 那么,使用C语言方式进行编译与使用C++方式进行编译又有什么区别呢? 在C++中,支持函数重载: ```c++ void func(); void func(int 阅读全文
posted @ 2023-08-03 18:47 C111-CR 阅读(118) 评论(0) 推荐(0)
摘要: `extern`是C语言中的关键字,它会**声明**一个**全局**变量或者函数,表明变量或者函数是**定义**在其他其他文件中的。 ​ **定义**:表示创建变量或分配存储单元。 ​ **声明**:说明变量的性质,但并不分配存储单元。 ```c extern int i; // 只是声明,但没有分 阅读全文
posted @ 2023-08-03 18:46 C111-CR 阅读(205) 评论(0) 推荐(0)