标签:c++
C++笔记

使用#define定义的宏,被预处理器替换后,编译器可能看不见,所以不会存在符号表中,这样调试的时候可能就没法定位了。如果使用const定义常量的方法,则会出现在符号表中 使用#define定义的宏,替换之后,可能在代码中有多份重复的目标码,但是使用const定义常量的方法,只会有一份 使用#define定义短函数,为了不出错,要加很多括号,代码难以维护,且没有作用域限制,会修改传进去的参数,而使用inline函数,一样可以获得相同的效率 想要iterator指向的不可变,用const_iterator 成员函数定义后面加了const,表示该成员函数的实现不会改变类的内容,比如里面的成员变量 ...

阅读更多
在栈中实现min函数

在《剑指Offer》一书看到的题目。要求push, pop, min的时间复杂度都为O(1) 一开始我能想到的方法是,用一个指针指向当前栈中最小的元素,当有新元素进来时, 和当前最小元素比较,如果较小则更新指针,否则不做更改。但是当元素出栈时,就出现 问题了,如果出栈的是最小的那个元素,那我这个指针应该指向哪里呢? 再想,如果我用2个指针,一个指向次小元素,一个指向最小元素,会怎样呢?其实也不行, 这样是换汤不换药,当最小元素出栈时,次小元素也不知道指向哪里? 没办法,我记录所有元素的顺序就行了。这样的话,空间复杂度会翻倍,但是这是让3个 函数时间复杂度都为O(1)以空间换时间的办法。 实际上...

阅读更多