05 2020 档案
摘要:报错是因为我们没有添加该函数所在头文件,可通过man xxx来查询xxx函数所在的头文件。添加后即可。
阅读全文
摘要:很多人抱怨说C++背着程序员做了太多事,如: if (cin) { /* ... */ } 为了让cin能转换为真假值,为cin定义一个类型转换运算符operator int(),就可以完成以上工作了,但以下行为: cin << intVal; 相当于左移一个int。可以用operator void
阅读全文
摘要:给你两个整数数组 startTime(开始时间)和 endTime(结束时间),并指定一个整数 queryTime 作为查询时间。 已知,第 i 名学生在 startTime[i] 时开始写作业并于 endTime[i] 时完成作业。 请返回在查询时间 queryTime 时正在做作业的学生人数。形
阅读全文
摘要:UNIX系统大多数文件IO只用open、read、write、lseek、close函数。 不带缓冲的IO指每个read和write都调用内核中的一个系统调用,不带缓冲的IO不是ISO C的组成部分,但它是POSIX.1和SUS(是POSIX.1标准的超集)的组成部分。 对内核而言,所有打开的文件都
阅读全文
摘要:宏定义: #define Point3d_print(pd) \ printf("(%g, %g, %g)", pd->x, pd->y, pd->z); // %g表示自动选择合适的表示法输出 在C++中,可以通过抽象数据类型ADT(一个class中的成员函数)实现(纯C的struct中不能有函数
阅读全文
摘要:如想阻止拷贝,但编译器为类声明了拷贝构造函数和拷贝赋值运算符,这样就不能达到目的了。 你可以通过将拷贝构造函数和拷贝赋值运算符声明为private的来阻止拷贝。但类的成员函数和友元还是可以调用,此时将它们声明但不定义就行了,这样调用它的函数会产生链接错误。 阻止拷贝动作应该在一个专门设计的基类内实现
阅读全文
摘要:读取未初始化的值会导致不明确行为。某些平台上读取未初始化的值就会使程序终止运行。 永远在使用对象前对其进行初始化。 构造函数体中可用=给数据成员赋值,也可以在构造函数初始化列表中对数据成员初始化。使用构造函数初始化列表效率较高,因为前者在初始化后又进行了赋值操作。 构造函数初始化列表中也能使用默认构
阅读全文
摘要:面试题30:包含min函数的栈。定义栈的数据结构,在该类型中实现一个能够得到栈的最小元素的min函数,该栈中,调用min、push、pop的时间复杂度都是O(1)。 可以创建一个辅助栈。分析:第一次压入3时,将3也压入辅助栈,之后再压入4时,由于4大于3,继续往辅助栈中压入3,即辅助栈中元素数量永远
阅读全文
摘要:给你一个长度为 n 的整数数组,请你判断在最多改变1个元素的情况下,该数组能否变成一个非递减数列。我们是这样定义一个非递减数列的:对于数组中所有的 i (1 <= i < n),总满足array[i] <= array[i + 1]。 遍历整个数列,当遍历到的当前下标为i的值小于前一个值时,就不符合
阅读全文
摘要:面试题9:用两个栈实现队列。队列声明如下,实现它的appendTail和deleteHead函数,分别表示在队尾插入节点和在队列头删除节点。 template <typename T> class CQueue { public: CQueue(); ~CQueue(); void appendTa
阅读全文
摘要:只要某值会保持不变,就应该说出来,即定义为const的。 const int *pi = nullptr; int const *pi = nullptr; // 两者等价 STL的迭代器就像T*指针,将迭代器声明为const的表示一个const指针,即T *const。如果想表示迭代器指向的东西不
阅读全文
摘要:宁可以编译器替换预处理器。因为或许#define不被视为语言的一部分,当你: #define ASPECT_RATIO 1.653 名字ASPECT_RATIO从未被编译器看到,可能在编译器处理源码前它就被预处理器移走了,于是ASPECT_RATIO可能没进入记号表(symbol table)内,当
阅读全文
摘要:所有OS都为它们所运行的程序提供服务,包括打开文件、执行新程序、分配存储区等。 操作系统可定义为一种软件,它控制计算机硬件资源,提供程序运行环境。通常将这种软件称为内核,它相对较小、位于系统核心。 内核接口被称为系统调用。公用函数库构建在系统调用接口之上,应用程序既可以使用函数库,也可以使用系统调用
阅读全文
摘要:一开始,C++只是C加上面向对象特性。今天C++是个多重范型编程语言,同时支持过程形式、面向对象形式、函数形式、泛型形式、元编程形式。 我们可以将C++看做多个次语言组成的联邦。主要的次语言有: 1.C。C++的基础。 2.Object-oriented C++。即C whit class。 3.T
阅读全文
摘要:面试题1:赋值运算符函数。如下为类型CMyString的声明,为该类型添加赋值运算符函数。 class CMyString { public: CMyString(char *pData = nullptr); CMyString(const CMyString &str); ~CMyString(
阅读全文
摘要:某些应用程序对内存分配有特殊需求,如使用new将对象放置在特定的内存空间中,为实现它,应用程序需要重载new和delete。 new实际执行步骤: 1.new表达式调用operator new(或operator new[])的标准库函数,分批一块足够大的、原始的、未命名的内存空间以便存储特定类型对
阅读全文
摘要:异常处理允许程序中独立开发的部分能够在运行时就出现的问题进行通信并做出相应处理。它能将问题的检测和解决过程分离开来,程序一部分负责检测问题的出现,解决该问题的任务传递给程序的另一部分。 通过抛出一条表达式来引发一个异常,抛出的表达式类型和当前的调用链共同决定了哪段处理代码处理该异常。 执行throw
阅读全文