c++
c++好难
嫌疑人XD
这个作者很懒,什么都没留下…
展开
-
回溯到底是否需要进行pop操作
之前在lc刷题的时候,dfs或者回溯的思路大致懂了,但是因为基础不牢固导致有几个小细节一直搞混了,现在整理一下。核心思路是:1)判断是否满足终止条件?满足则做出处理 2)不满足,则进行选择->调用下一层->撤销选择。伪代码模板如下。//...//...void dfs() { if(条件满足) { 执行策略; } for() { push_back(); dfs(); pop_back(); }}//...之前一直向不太清这个p原创 2022-03-03 14:57:38 · 751 阅读 · 0 评论 -
inline函数的定义要放在头文件
因为inline会实现内联替换,inline是要加到函数是线上而非声明,加到声明上编译器也会忽略的。内联展开是在编译时进行的,只有链接的时候源文件之间才有关系。**所以内联要想跨源文件必须把实现写在头文件里。如果一个inline函数会在多个源文件中被用到,那么必须把它定义在头文件中。**不然在编译的时候,编译器会找不到那个内联函数的。...原创 2022-02-24 21:39:43 · 2381 阅读 · 0 评论 -
值传递,引用传递和指针传递代码直观展示
#include<iostream>using namespace std;//值传递 void change1(int n){ cout<<"值传递--函数操作地址"<<&n<<endl; //显示的是拷贝的地址而不是源地址 n++;}//引用传递,形参相当于是实参的“别名”,对形参的操作其实就是对实参的操作,在引用传递过程中,被调函数的形式参数虽然也作为局部变量在栈中开辟了内存空间,但是这时存放的是由主原创 2022-02-22 16:03:43 · 95 阅读 · 0 评论 -
c++关于回调函数和typedef
先看看typedef的用法tepdef是系统保留字,可以为指针定义简介的名称,如typedef int (*MyFUN)(int a,intb);int Max(int a,int b);MyFUN pMyFun;pMyFun= Max;其中MyFUN代表指向函数的指针类型的新名称,为指向函数的指针的类型别名。再说一下复杂声明的分析理解复杂声明可用的“右左法则”:从变量名看起,先往右,再往左,碰到一个圆括号就调转阅读的方向;括号内分析完就跳出括号,还是按先右后左的顺序,如此循环,直到整个原创 2021-11-30 12:46:12 · 1288 阅读 · 0 评论 -
c++协程(todo)
什么是协程传统的C++服务器框架,一般是同步I/O或者异步I/O。同步 I/O 框架同步I/O框架往往使用的是多进程模式:一个父进程负责 accept 传入连接,然后 fork 一个子进程处理;或者是一个父进程创建了一个 socket 之后,fork 出多个子进程同时执行 accept 和处理。最基本的,从socket, bind, connect, accept, read, write 等等一路下来的 API,按顺序这样调用下来,然后写了一个 server / client 的话,可以算是一种同原创 2021-11-30 00:20:15 · 2452 阅读 · 0 评论 -
c++ 01 完全 背包
#include <iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<climits>using namespace std;int N, V;int W[20];int Value[20];int f[20]; int main(){ scanf("%d%d", &N, &原创 2021-09-10 00:58:38 · 101 阅读 · 0 评论 -
c++ thread_local
C++线程储存持续性(C++11)关键字 thread_local,其生命周期与所属的线程一样长。thread_specific_ptr代表了一个全局的变量,而在每个线程中都各自new一个线程本地的对象交给它进行管理,这样,各个线程就可以各自独立地访问这个全局变量的本地存储版本,线程之间就不会因为访问同一全局对象而引起资源竞争导致性能下降。而线程结束时,这个资源会被自动释放。还有一种实现方式,比如我不把某一资源生命为静态变量,我在每个线程调用函数中声明局部变量,然后通过传参的方式来实现。不过这.原创 2021-11-25 23:47:54 · 2700 阅读 · 0 评论 -
关于指针数组和数组指针 strlen sizeof
自己之前一直对int main(int argc, char* argv[])参数有点一知半解,导致今天有点迷糊。先从一个很简单的程序开始。https://www.cnblogs.com/dzry/archive/2011/05/12/2044835.html原创 2021-11-24 16:25:23 · 611 阅读 · 0 评论 -
C++后台开发知识点总结
说一说内存泄漏内存泄漏主要是由于疏忽导致未能正确释放掉程序中已经不使用的内存。主要来源有两块:一是没能够正确使用free/delete释放malloc/new出的内存,导致堆内存泄漏。第二是系统资源泄露。主要指程序使用系统分配的资源比如SOCKET等没有使用相应的API释放掉,导致系统资源的浪费,严重可导致系统效能降低,系统运行不稳定。内存管理栈:编译器自动管理、释放,主要存放局部变量,函数参数堆:malloc/new free/delete 程序员自行分配的内存代码区:存放函数体的二进制代码字原创 2021-03-29 17:12:57 · 896 阅读 · 0 评论 -
单例模式等
https://blog.csdn.net/crayondeng/article/details/24853471?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163163491516780262566416%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=163163491516780262566416&biz_id=0&am原创 2021-09-15 09:23:50 · 97 阅读 · 0 评论 -
shared_ptr
template <typename T> 5 class shared_ptr { 6 public: 7 shared_ptr(T* p) : count(new int(1)), _ptr(p) {} 8 shared_ptr(shared_ptr<T>& other) : count(&(++*other.count)), _ptr(other._ptr) {} 9 T* operator->() { return _p原创 2021-09-15 23:21:24 · 89 阅读 · 0 评论 -
c++ string 和 char相互转换问题
char转换成string直接赋值char a = 40;string b = a; /*错误。因为string是一个指针,存储的值是所指向的地址,而char型存储的是内容,所以不可以直接用赋值号赋值*/ const char* a = "hello";string b = a; //正确 const char[] a = "hello";string b = a; //正确利用string构造函数char a = 48;string原创 2021-08-21 19:29:54 · 239 阅读 · 0 评论