选择题OJ 在(函数代码少、频繁调用 )情况下适宜采用 inline 定义内联函数内联函数在编译时,类似宏替换,使用函数体 替换调用处的函数名,因此适合代码较少调用较多的函数。对象是指一块能够存储数据并具有某种类型的内存空间4指针是对象而引用不是有效的迭代器指向某个元素,或者容器尾元素的下一个位置;其余的都是无效。如果容器为空,begin和end返回同一个迭代器,都是尾后迭代器—&g...
选择题OJ3 操作系统 一进程刚获得三个主存块的使用权,若该进程访问页面的次序是{1321215123},采用LRU算法时,缺页数是 5 次。 1第一次(缺1) 3 1第二次(缺3) 2 3 1第三次(缺2)1 2 3(刚使用的放在前面未使用的依次后移)2 1 31 2 35 1 2第四次(3是最少使用的所以换出)1 5 22 1 53 2 1第五次(5是最少使用的所以...
选择题OJ2 c++继承体系种构造函数的调用顺序C++继承体系中,初始化时构造函数的调用顺序如下(1)任何虚拟基类的构造函数按照他们被继承的顺序构造(2)任何非虚拟基类的构造函数按照他们被继承的顺序构造 +(3)任何成员对象的函数按照他们声明的顺序构造(4)类自己的构造函数class A{ public: A ():m_iVal(0){test();} virtual...
剑指offfer 51-67 C++ 51.构建乘积数组给 定 一 个 数 组 A[0,1,…,n-1], 请 构 建 一 个 数 组 B[0,1,…,n-1], 其中B中的元素B[i]=A[0]A[1]…A[i-1]A[i+1]…A[n-1]。不能使用除法。//B[i]其实就是等于 A 中除 A[i]之外的所有元素之积。//从左到右算 B[i]=A[0]*A[1]*...*A[i-1], 从右到左算...
剑指offer 30-50 C++ 30.连续子数组的最大和HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回...
剑指offer C++ 01-29 01.二维数组的查找在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该数。//分析:时间复杂度 O(m+n),m 和 n 分别是行数和列数。空间复杂度 O(1)。 思想是从右上角开始判断,每次判断可以排除一行或一列。class Solution {pub...
线程 线程控制的相关函数//1.创建线程//2.终止线程//3.等待线程//4.线程分离//输出型参数:c/c++中的,#include <pthread.h>//process p 线程//thread t 进程void* ThreadEntry(void* arg){while(1){ printf("in T"," "%lu",pthread_s...
gcc,makefile Linux编译器-gcc/g++使用1.编译过程https://blog.csdn.net/weixin_41143631/article/details/81221777预处理(进行宏替换)编译(生成汇编)汇编(生成机器可识别代码)连接(生成可执行文件/库文件)格式 gcc [选项] 要编译的文件[选项] [目标文件]预处理(进行宏替换)预处理功能主要包括宏定义,...
信 号 信号概念信号是进程之间事件异步通知的一种方式,属于软中断信号的作用,相当于神经系统,帮助操作系统来处理运行过程中遇到的各种意外情况信号是一个计数器,负责进行进程间的同步和互斥,整个计数器描述了可用资源的个数每次有进程想申请一个可用资源的时候,计数器-1 p;每次有进程想释放一个可用资源的时候,计数器+1 V;如果计数器已经是0了,这时候再有进程想要申请资源:1.进程...
AVL树 4.2AVL树4.2.1 AVL树的概念二叉搜索树虽可以缩短查找的效率,但如果**数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当 于在顺序表中搜索元素,效率低下。**解决上述问题的方法:当向二叉搜索树中插入新结点后,如果能保证每个结点的左右子树高度之 差的绝对值不超过1(需要对树中的结点进行调整),即可降低树的高度,从而减少平均搜索长度。一棵AVL树或者是空树,或者是具有以下性质...
map+set+平衡二叉树 1.关联式容器STL中的部分容器,比如:vector、list、deque、forward_list(C++11)等,这些容器统称为序列式容器,因为其底层为线性序列的数据结构,里面存储的是元素本身。关联式容器也是用来存储数据的,与序列式容器不同的是,其里面存储的是<key, value>结构的键值对,在 数据检索时比序列式容器效率更高。特点STL 关联容器的底层数据结构...
C++类型转换 参考链接C++强制类型的转换有四种static_caststatic_cast用于非多态类型的转换(静态转换),编译器隐式执行的任何类型转换都可用static_cast,但它 不能用于两个不相关的类型进行转换。相当于C语言的隐式类型转换。void test2(){ int i = 1; double d = static_cast<double>( i);//注意要...
C++继承 #include <iostream>#include <string>using namespace std;class Person{public: void Print() { cout << "name:" << _name << endl; cout << "age:" << _ag...
C++多态 不规范的重写:在基类函数加了virtual关键字 ,在派生类中重写的成员函数前不加virtual,也是构成重写的。c++的编译器应该是保证虚函数表的指针存在于对象实例中最前面的位置(这是为了保证取到虚函数表的有最高的性能——如果有多层继承或是多重继承的情况下)接口结成和实现继承普通函数的继承是一种实现继承,派生类继承了基类函数,可以使用函数,继承的是函数的实现。虚函数的继承是一种接口继承...
C++异常 1.C语言传统的处理错误的方式传统的错误处理机制:终止程序,如assert,缺陷:用户难以接受。如发生内存错误,除0错误时就会终止程序。返回错误码,缺陷:需要程序员自己去查找对应的错误。如系统的很多库的接口函数都是通过把错误码 放到errno中,表示错误C 标准库中setjmp和longjmp组合。这个不是很常用,了解一下实际中C语言基本都是使用返回错误码的方式处理错误,部...
C&C++内存管理 1.C/C++内存分布栈又叫堆栈,非静态局部变量/函数参数/返回值等等,栈是向下增长的。内存映射段是高效的I/O映射方式,用于装载一个共享的动态内存库。用户可使用系统接口创建共享共享内存,做进程间通信。堆用于程序运行时动态内存分配,堆是可以上增长的。数据段–存储全局数据和静态数据。代码段–可执行的代码/只读常量。2.C语言中动态内存管理方式2.1内存分配方式:从静态存...
C++模板 非类型模板参数模板参数分类类型形参与非类型形参。类型形参即:出现在模板参数列表中,跟在class或者typename之类的参数类型名称。非类型形参,就是用一个常量作为类(函数)模板的一个参数,在类(函数)模板中可将该参数当成常量来使用。注意:浮点数、类对象以及字符串是不允许作为非类型模板参数的。非类型的模板参数必须在编译期就能确认结果。模板的特化使用模板可以实现一些与类型...
程序环境和预处理,命名空间 #define//#define 定义标识符#define MAX 1000#define reg register //为 register这个关键字,创建一个简短的名字#define do_forever for(;;) //用更形象的符号来替换一种实现#define CASE break;case //在写case语句的时候自动把 break...
vector vector是表示可变大小数组的序列容器。就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素 进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自 动处理。本质讲,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小 为了增加存储空间。其做法是,分配一个新...