![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
zznb
zznb
展开
-
剑指offer day3
reverse函数,字符串从位置n开始左转 定义哈希表,存储bool型变量,判断出现,为true原创 2022-07-09 09:23:15 · 158 阅读 · 1 评论 -
剑指offer day2
用栈来辅助,压入栈,再输出 遍历链表,将链表的后一个节点的指针指向前一个节点,为了更改之后,还要保存后一个节点的地址,cur = next。 因为随机指针的存在,有可能指向的节点还未创建;用哈希表记录当前节点的对应新节点的创建情况,检查(当前节点的next节点)和(当前节点random指向节点),如果两个节点没有没创建,立刻递归进行创建。当拷贝完成,回到当前拷贝层,则需要考虑节点可能会被多个节点指向的情况,所以要检查当前节点是否被拷贝过。在实际操作中,还要考虑空节点的情况。...原创 2022-07-07 14:31:21 · 165 阅读 · 0 评论 -
剑指offer day1
1.用两个栈实现队列用一个栈作为输入栈inStack,用于appenTail,用一个栈作为输出栈outStack,用于deleteHead;每次deleteHead,若输出栈为空,则将输入栈依次pop,push到输出栈中,则输出栈中从栈顶到栈尾部就是队列从队首到队尾的元素。2.包含最小函数的栈如果在a存入栈之前,已经有b,c,d,那么在a pop之前,b,c,d一定在栈中,所以在a入栈时,将栈中的最小元素m存起来,利用辅助栈与之对应。...原创 2022-07-06 14:12:08 · 162 阅读 · 0 评论 -
c++线程锁
“锁”的本质属性是为内存中的各种变量提供“访问保护”,计算机定义为互斥量(mutex)。mutex:互斥访问的量,在多线程编程中起作用,c++11开始提供了std::mutex,对多线程的加锁操作提供了很好的支持。例:假定有一个全局变量counter,启动两个线程,每个都对该变量自增10000次,最后输出该变量的值为了显示多线程竞争,导致结果不正确的现象,在每次自增操作的时候都让当前线程休眠1ms对应的cmakelists.txt自增操作“counter++”不是原子操作,而是由多条汇编指令完成原创 2022-07-03 14:57:52 · 5491 阅读 · 0 评论 -
c++性能优化
1.继承:抽象设计是有损失的,在继承体系中子类的创建会调用父类的构造函数,销毁时会调用父类的析构函数,这种消耗会随着继承的深度直线上升, 不要过度的抽象和继承,更为严重的是多重继承中并且有虚函数的存在情况更为复杂,的确,这些问题设计开销,但是,多种继承减少了编码的负担,同时也让问题的解决方案更加简洁,这当然要付出一些代价。总之,与n个基类的多重继承层次相关的额外虚函数表有n-1个。派生类和最左边的非虚基类共享一个虚函数表。因此,带有2个基类的多种继承层次,有1个(2-1)基类的虚函数表和1个派生类的虚函数表原创 2022-07-02 17:04:34 · 1164 阅读 · 0 评论 -
c++常见关键字
bool:布尔类型,属于基本类型的整数类型,取值为真和假true:具有布尔类型的字面量,表示真false:具有布尔类型的字面量,表示假char:表示字符型,定义了字节的大小,char表示单字节字符wchar_t:表示宽字符型,表示多字节字符int:整型数double:双精度浮点数,精度不小于floatfloat:浮点数short:long:long double表示精度不小于double的浮点数signed:前缀修饰整数类型,有符号,不可修饰wchar_t,char16_t,char32_tunsigned原创 2022-07-02 14:40:10 · 3335 阅读 · 0 评论