C/C++
文章平均质量分 93
不懂音乐的欣赏者
主要研究智能机器人、群体控制、路径规划方向。
展开
-
Gurobi——GRBLinExpr
文章目录GRBLinExprGRBLinExpr()GRBLinExpr::addTerms()GRBLinExpr::clear()GRBLinExpr::getConstant()GRBLinExpr::getCoeff()GRBLinExpr::getValue()GRBLinExpr::getVar()GRBLinExpr::operator=GRBLinExpr::operator+GRBLinExpr::operator-GRBLinExpr::operator+=GRBLinExpr::ope原创 2022-01-27 12:31:40 · 3614 阅读 · 1 评论 -
Gurobi——GRBEnv
文章目录GRBEnvGRBEnv()GRBEnv Gurobi 环境对象(Gurobi environment object)。 Gurobi 模型总是与环境相关联。 您必须先创建环境,然后才能创建和填充模型。 您的程序中通常只需要一个环境对象。 环境对象上的方法主要用于管理 Gurobi 参数(例如,get、getParamInfo、set)。GRBEnv() GRBEnv 对象的构造函数。 您可以选择构建一个本地环境,它在本地机器上解决 Gurobi 模型,一个 Gurobi 计算服务器原创 2022-01-27 11:23:05 · 1733 阅读 · 0 评论 -
C++——随笔
C++和C的区别参考回答:设计思想上:C++是面向对象的语言,而C是面向过程的结构化编程语言语法上:C++具有封装、继承和多态三种特性C++相比C,增加多许多类型安全的功能,比如强制类型转换、C++支持范式编程,比如模板类、函数模板等四种cast转换C++中四种类型转换是:static_cast, dynamic_cast, const_cast, reinterpret_castconst_cast用于将const变量转为非const,例如下面语句是编译不通过的:原创 2020-10-03 16:13:58 · 311 阅读 · 0 评论 -
C++——m个月饼分给n个人
题目描述 中秋节,公司分月饼,m个员工,买了n个月饼,m<=n,每个员工至少分1个月饼,但可以分多个,单人份到最多月饼的个数为Max1,单人分到第二多月饼的个数是Max2,Max1-Max2<=3,。同理,单人分到第n-1多月饼的个数是Max(n-1),单人分到第n多月饼的个数是Max(n),Max(n-1)-Max(n)<=3。请问有多少种分月饼的方法?输入描述:第一行输入m n,表示m个员工,n个月饼,m<=n输出描述:输出有多少种月饼分法解题思路: 把n个原创 2020-08-11 12:50:41 · 5413 阅读 · 14 评论 -
C++——已知前序、中序,构建树
题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。解题思路pre:前序,vin:中序pre不为空时,第一个元素一定是根,根据pre[0]在vin中的位置,可以将pre和vin都分为左右两个子树。然后迭代即可判断pre是否为空,判断vin也可。根据pre[0]在vin中的位置,将pre和vin分别划分成原创 2020-08-10 16:59:52 · 862 阅读 · 0 评论 -
计算机网络——TCP/UDP
文章目录1. TCP保证可靠性:1.1 序列号、确认应答、超时重传1.2 窗口控制与高速重发控制/快速重传(重复确认应答)1.3 拥塞控制2. TCP建立连接和断开连接的过程:2.1 建立连接/三次握手2.2 断开连接/四次挥手2.3 三次握手原因2.4 四次挥手原因3. TCP/IP模型四层TCP/IP模型七层ISO模型4 HTTP/HTTPS区别如下:4.1 HTTPS优点:4.2 HTTPS缺点:4.3 HTTP4.3.1 返回码4.3.2 常见状态代码5. IP/MAC地址相关例题1.例。搜索bai原创 2020-08-09 22:01:05 · 491 阅读 · 1 评论 -
C++——输入链表,逆序输出list
题目要求: 输入一个链表,按链表从尾到头的顺序返回一个ArrayList。/*** struct ListNode {* int val;* struct ListNode *next;* ListNode(int x) :* val(x), next(NULL) {* }* };*/class Solution {public: vector<int> printListFromTa原创 2020-08-09 22:00:05 · 1405 阅读 · 0 评论 -
操作系统——页表寻址
文章目录Linux最初的两级页表机制Linux的三级页表机制Linux的四级页表机制页式内存管理,内存分成固定长度的一个个页片。操作系统为每一个进程维护了一个从虚拟地址到物理地址的映射关系的数据结构,叫页表,页表的内容就是该进程的虚拟地址到物理地址的一个映射。页表中的每一项都记录了这个页的基地址。通过页表,由逻辑地址的高位部分先找到逻辑地址对应的页基地址,再由页基地址偏移一定长度就得到最后的物理地址,偏移的长度由逻辑地址的低位部分决定。一般情况下,这个过程都可以由硬件完成,所以效率还是比较高的。页式内存原创 2020-08-09 11:03:47 · 2521 阅读 · 0 评论 -
C++——多态:static、virtual在类中的应用
给你一个类,里面有static,virtual,之类的,来说一说这个类的内存分布参考回答:1、static修饰符1)static修饰成员变量 对于非静态数据成员,每个类对象都有自己的拷贝。而静态数据成员被当做是类的成员,无论这个类被定义了多少个,静态数据成员都只有一份拷贝,为该类型的所有对象所共享(包括其派生类)。所以,静态数据成员的值对每个对象都是一样的,它的值可以更新。 因为静态数据成员在全局数据区分配内存,属于本类的所有对象共享,所以它不属于特定的类对象,在没有产生类对象前就可以使用原创 2020-08-09 11:03:12 · 1017 阅读 · 0 评论 -
操作系统——系统调用
系统调用1)概念: 在计算机中,系统调用(英语:system call),又称为系统呼叫,指运行在使用者空间的程序向操作系统内核请求需要更高权限运行的服务。系统调用提供了用户程序与操作系统之间的接口(即系统调用是用户程序和内核交互的接口)。 操作系统中的状态分为管态(核心态)和目态(用户态)。大多数系统交互式操作需求在内核态执行。如设备IO操作或者进程间通信。特权指令:一类只能在核心态下运行而不能在用户态下运行的特殊指令。不同的操作系统特权指令会有所差异,但是一般来说主要是和硬件相关的一些指令。用原创 2020-08-09 11:02:22 · 7270 阅读 · 0 评论 -
操作系统——Linux的4种锁机制
文章目录Linux的4种锁机制互斥锁:mutex读写锁:rwlock自旋锁:spinlockRCU互斥锁和读写锁的区别:请你讲述一下互斥锁(mutex)机制,以及互斥锁和读写锁的区别参考回答:Linux的4种锁机制互斥锁:mutex 互斥锁:mutex,用于保证在任何时刻,都只能有一个线程访问该对象。当获取锁操作失败时,线程会进入睡眠,等待锁释放时被唤醒。读写锁:rwlock 读写锁:rwlock,分为读锁和写锁。处于读操作时,可以允许多个线程同时获得读操作。但是同一时刻只能有一个线程可原创 2020-08-07 23:31:42 · 6926 阅读 · 0 评论 -
C++指针相关
const char * arr = “123”; char * brr = “123”; const char crr[] = “123”; char drr[] = “123”;参考回答:const char * arr = “123”;//字符串123保存在常量区,const本来是修饰arr指向的值不能通过arr去修改,但是字符串“123”在常量区,本来就不能改变,所以加不加const效果都一样char * brr = “123”;//字符串123保存在常量区,这个arr指针指向的是同一个位原创 2020-08-07 22:08:33 · 234 阅读 · 0 评论 -
C++——不使用sqrt实现开根号
记录下今天百度面试的题目,感觉凉凉,还是自己太菜。面试官让不使用math.h里面的sqrt()函数,实现求根号的操作。思路: 使用二分法来实现。输入一个数n,其中low=0,high=n,mid=(low+high)/2,通过判断mid2^22与n的关系:如果mid2^22<n,说明求根后的结果在(mid, high)中间,因此low=mid否则,说明求根后的结果在(low, mid)中间,因此high=mid参考代码如下:#include <iostream>us原创 2020-08-07 22:07:12 · 8152 阅读 · 1 评论 -
C++——数据存储
静态/动态内存分配一个程序被加载到内存中,这块内存首先就存在两种属性:静态分配内存和动态分配内存。静态分配内存:是在程序编译和链接时就确定好的内存。动态分配内存:是在程序加载、调入、执行的时候分配/回收的内存。数据存储Text 也称为代码段(Code),用来存放程序执行代码,同时也可能会包含一些常量(如一些字符串常量等)。该段内存为静态分配,这部分区域的大小在程序运行前就已经确定,并且内存区域属于只读。这块内存是共享的,当有多个相同进程(Process)存在时,共用同一个text段。原创 2020-08-06 23:58:29 · 3113 阅读 · 1 评论 -
操作系统——线程/进程篇
文章目录进程线程进程与线程的区别进程间通信的方式1.管道:1)普通管道PIPE:2)命名管道FIFO:2.系统IPC(进程间通信,Inter-Process Communication):2.1 消息队列2.2 信号量semaphore2.3 信号signal2.4 共享内存(Shared Memory)3.套接字SOCKET:进程 进程(Process)是计算机中已运行程序的实体。 程序本身是指令的集合,进程才是程序(那些指令)的真正运行。用户下达运行程序的命令后,就会产生进程。一个程序可以对原创 2020-08-06 23:04:58 · 520 阅读 · 0 评论 -
C++代码 回文素数
题目描述: 输入任意两个正整数m<n,求得两个数之间的所有回文素数并输出。参考代码#include <iostream>using namespace std;int get_length(int x);int main() { int m = 0, n = 0; int count = 0; //int temp = 0; bool NotSuShu; std::cin >> m >> n; for (int i = m; i原创 2020-08-06 21:28:21 · 2222 阅读 · 0 评论 -
C++智能指针auto_ptr、shared_ptr、weak_ptr、unique_ptr
文章目录为什么要用智能指针野指针产生原因auto_ptrunique_ptrshared_ptrweak_ptr C++里面的四个智能指针: auto_ptr, shared_ptr, weak_ptr, unique_ptr 其中后三个是C++11支持,并且第一个已经被11弃用。为什么要用智能指针 智能指针的作用是管理一个指针,因为存在以下这种情况:申请的空间在函数结束时忘记释放,造成内存泄漏。使用智能指针可以很大程度上的避免这个问题,因为智能指针就是一个类,当超出了类的作用域是,类会自动调用原创 2020-08-06 00:46:20 · 408 阅读 · 0 评论 -
C++排序算法《汇总》——排序看着一篇就够了
文章目录插入排序直接插入排序希尔排序交换排序冒泡排序快速排序选择排序简单选择排序堆排序堆归并排序二路归并排序多路归并排序性能对比插入排序直接插入排序 基本思想:把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。 参考代码:void InsertSort(int *arr, int len){ i原创 2020-08-05 21:56:57 · 527 阅读 · 0 评论 -
C++数据结构——类型划分
文章目录逻辑结构线性结构非线性结构常用数据结构数组(Array)栈( Stack)队列(Queue)链表( Linked List)树( Tree)图(Graph)堆(Heap)散列表(Hash)逻辑结构 数据结构有很多种,一般来说,按照数据的逻辑结构对其进行简单的分类,包括线性结构和非线性结构两类。线性结构 简单地说,线性结构就是表中各个结点具有线性关系。如果从数据结构的语言来描述,线性结构应该包括如下几点:线性结构是非空集。线性结构有且仅有一个开始结点和一个终端结点。线性结构所有结点原创 2020-08-05 17:43:26 · 1087 阅读 · 0 评论 -
原创 C/C++复习之路——王道程序员求职宝典——第九章《面向对象编程》
文章目录继承时导致的二义性class <派生类>:<继承方式1> <基类名1>,<继承方式2> <基类名2>, ...{ <派生类新定义成员>};继承方式:public、private、protected基类成员在派生类中的访问属性基类成员privateprotectpublicprivateprotectpublicprivateprotectpublic派生方式private原创 2020-07-31 15:21:25 · 235 阅读 · 0 评论 -
原创 C/C++复习之路——王道程序员求职宝典——第八章《类》
文章目录类成员简介成员函数构造函数成员初始化列表复制构造函数析构函数成员函数的重载、覆盖与隐藏类成员简介成员函数 程序员在成员函数中处理非静态数据成员,隐式的类对象就会发生。比如:void Point3d::translate(const Point3d:: &pt){ x += pt.x; y += pt.y; z += pt.z;}事实上x、y、z的存取是经由this指针完成的,其函数参数可以理解为:void Point3d::translate(Point3d * co原创 2020-07-29 20:21:34 · 259 阅读 · 0 评论 -
原创 C/C++复习之路——王道程序员求职宝典——第七章《指针与引用》
文章目录例。在32位系统下,写出下属代码的输出结果。int main(){ double* (*a)[3][6]; cout<<sizeof(a)<<endl; cout<<sizeof(*a)<<endl; cout<<sizeof(**a)<<endl; cout<<sizeof(***a)<<endl; cout<<sizeof(****a)<<endl;}解析原创 2020-07-28 21:28:56 · 244 阅读 · 0 评论 -
C/C++复习之路——王道程序员求职宝典——第六章《函数》
文章目录参数传递形参/实参传递指针的引用参数传递形参/实参形参:出现在函数定义中,在整个函数体内都可以使用,离开该函数则不能使用。实参:出现在主调函数中,进入被调函数后,是参变量也不能使用。例。fun((exp1,exp2), (exp3,exp4,exp5))有几个实参?解析:2个。(exp1,exp2)是逗号表达式,表达式的值为exp2。C语言中有两种参数传递:值传递指针传递C++中有三种传递方法:值传递:非引用类型的形参以相应实参的副本(值)初始化,即对形参的任何修改仅用作原创 2020-07-27 23:36:08 · 544 阅读 · 0 评论 -
C/C++复习之路——王道程序员求职宝典——第五章《C预处理器、作用域、static、const以及内存管理》
文章目录C预处理器宏替换文件包含条件编译全局变量与局部变量局部变量static类中static的作用静态成员函数constC预处理器 C预处理器处理程序的源代码,在编译器之前运行,通常以符号“#”开头。C语言预处理器主要有三个方面的内容:宏定义与宏替换;文件包含;条件编译。宏替换1)符号常量的宏定义和宏替换,格式如下:#define 标识符 字符串2)带有参数的宏定义及其替换,格式如下:#define 标识符(参数列表) 字符串例。如果有宏定义:#define FUN(x)原创 2020-07-26 15:43:49 · 365 阅读 · 0 评论 -
C/C++复习之路——王道程序员求职宝典——第四章《运算符及其优先级》
文章目录++/--i++与++i/i--与--i或、与、非及异或异或++/–i++与++i/i–与--ii++表示取i的地址,把它的值装入寄存器,然后增加内存中i的值。也就意味着当i++这句话计算完以后,遇到":"后,才将i的数值在对应的地址中更新。而++i则是曲i的地址,并增加它的数值。例1:int main(void){ int a = 3; a += (a++); //执行后a=7。“=”右边a=4(此时没有将a=4放入a的地址中),“=”左边a=3,因此加完a=7,原创 2020-07-25 16:37:07 · 295 阅读 · 0 评论 -
C/C++复习之路——王道程序员求职宝典——第二章《字符串》
文章目录C风格字符串C风格字符串C++通常使用char*const char* 类型的指针来操作C语言中的风格字符串。例如:const char *cp="some calue";while(*cp){ // do something to *cp printf("%c\n", *cp); ++cp;}例1:下面程序的输出是什么?int main(){ int n; char y[10] = "ntse"; char *x = y; n原创 2020-07-25 15:01:43 · 236 阅读 · 0 评论 -
C/C++复习之路——王道程序员求职宝典——第一章
动态声明一维数组当数组大小未知时,需要动态声明一维数组,声明格式如下:int* a = new int[n];使用完毕是需要释放空间delete []a;C风格字符串与字符数组字符常量'A'字符串常量"A",编译器会自动在末尾添加一个空字符,其表示字母A和空字符(null)两个字符。末尾加了\0的字符数组。Eg1. 下列___是不正确的字符常量?A. ‘n’B. ‘I’C. “a”D. ‘\101’解析:答案选C,C选项是一个字符串常量,其包含字符’a’和空字符两个字符原创 2020-07-22 16:00:31 · 370 阅读 · 0 评论 -
数据定义+动态内存分配
数据类型定义/* * Tools for allocating, freeing and saving/loading data structures */#include "datastructs.h"/* Tools for allocating and freeing data structures *//* Dynamic "boolean" array (1D) */...原创 2019-09-17 16:48:20 · 302 阅读 · 0 评论 -
C/C++中 static用法详解
在循环体内和在函数内的static变量都是静态局部变量。静态局部变量有以下特点:1.该变量在全局数据区分配内存;2.静态局部变量在程序执行到该对象的声明处时被首次初始化,即以后的函数调用不再进行初始化; 3.静态局部变量一般在声明处初始化,如果没有显式初始化,会被程序自动初始化为0;4.它始终驻留在全局数据区,直到程序运行结束。但其作用域为局部作用域,当定义它的函数或语句块结束时,其...转载 2019-03-06 14:50:12 · 1785 阅读 · 2 评论 -
C\C++ 获取当前程序运行路径
文章目录1. readlink()函数介绍2. C语言版本3. C++版本4. 编译5. 运行结果1. readlink()函数介绍主要使用readlink()函数表头文件: #include <unistd.h>定义函数:int readlink(const char *path, char *buf, size_t bufsiz);函数说明:re...原创 2019-02-25 13:11:36 · 19471 阅读 · 0 评论