
c++
人间世庄子
这个作者很懒,什么都没留下…
展开
-
Linux 下使用C++面向对象实现socket通信
0X00 什么是Socket通信我们知道,在网络编程中,socket通信是入门级编程。就像是你学一门语言,就先用这门语言写出Hello World。所以我们今天就先写出这Hello World。Socket通信,也就是我们所说的套接字,这是进程间的一种通信方式,但与其它通信方式不一样的是,套接字可以通过网络进行传输。我们知道的是,Socket通信是一种通信。通信通信,总该有两个对象才能进行相...原创 2020-03-10 23:19:15 · 1450 阅读 · 3 评论 -
C++ 主进程等待子线程的问题以及解决
0X00 C++11 的 < thread > 库今天在做实验的时候需要用到多线程,于是去搜了一些过于C++多线程编程的知识。了解到,在C++11中,添加了新库来支持多线程:#include <thread>创建新线程的方法如下:std::thread t(function)其中 function()是定义好的函数,function()是函数名当线程创建好...原创 2020-03-07 23:11:11 · 4902 阅读 · 1 评论 -
C++ 虚函数的神奇效用
C++ 虚函数的神奇效用0X00 前言可能大多数人开始学C++和我一样,对于虚函数(virtual)这个词,有点似懂非懂、云里雾里的感觉。今天我们就把这个虚函数好好唠清楚0X10 何为虚函数?其实虚函数没有那么大假大空的定义,就一句话:在类定义的函数中,如果用限定词 vitual 修饰的就是虚函数怎么样,是不是简单利索不墨迹不过还是来一点更实在的,直接上代码我们先定义一个类,...原创 2020-02-29 22:43:03 · 222 阅读 · 0 评论 -
C++ 类的自动转换和强制类型装换
C++ 类的自动转换和强制类型装换0X00 前言在C++中,类的设计是一件十分重要的事情,一个类设计的好坏取决于它接口是否优良,即函数的设计有时候我们可能需要设计多种多样的接口,目的是为了增强类的多态性。今天我们来讲一讲类的转化问题在此之前,我们来定义一个类,作为我们后面的class Dog{private: int GoOutTimes; //表示一周遛狗的次数 d...原创 2020-02-26 23:54:10 · 363 阅读 · 0 评论 -
C++函数模板介绍(template)
C++函数模板介绍函数模板的引入一般来讲,我们在书写一个函数时,他的参数类型是确定的。比如有下面的函数原型:void Swap(int &a,int &b);从函数原型可以看到,这是一个交换函数。功能是将传入的a,b的值进行交换。但是我们也可以看到,传入的参数都是int型的,因此只能交换两个int型的值。那么问题来了:如果我向交两个double型的变量,我是不是又要写...原创 2020-02-16 20:42:07 · 379 阅读 · 0 评论 -
剑指offer 题22—链表中倒数第K个节点
剑指offer 题22—链表中倒数第K个节点题目输入一个链表,输出该链表中倒数第K个节点。为了符合大多数人的习惯,从本题第1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次为1,2,3,4,5,6.这个链表的倒数第3个节点是值为4的节点。节点定义如下:struct ListNode{ int m_nValue; ListNode* m_pN...原创 2020-02-15 21:56:27 · 170 阅读 · 0 评论 -
剑指offer 题21—调整数组顺序是奇书位于偶数前面
调整数组顺序是奇书位于偶数前面题目输入一个整数数组,实现一个函数来调整该数组中的数字的顺序,使得所有计数位于数组的前半部分,所有偶数位于数组的后半部分初步分析最简单的办法当然是从头扫描这个数组,每碰到一个偶数,就该数放到最后面,也就是这个数后面的数都要向前移动。由于每碰到一个偶数就要移动O(n)个数字,总的时间复杂度为O(n^2)。更好的办法既然数组中只有两类数字——非奇即偶。那...原创 2020-02-12 21:18:33 · 186 阅读 · 0 评论 -
神奇的C++——指针
神奇的C++——指针前言学过C++或者C的同学可能都知道,它们和java、python这些最不一样的就是拥有指针——高级而又强大。今天看书的时候,又看到了关于指针的内容,想起记录下来,或多或少留点记录。不周全的以后再补充啦概念指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。地址指向一块内存,可以用来存储数据。什么数据呢?讲道理,只要是数据都可以存储,int、long、c...原创 2020-02-10 22:37:55 · 222 阅读 · 0 评论 -
字母异位词分组
字母异位词分组题目给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”],输出:[[“ate”,“eat”,“tea”],[“nat”,“tan”],[“bat”]]说明:所有输入均为小写字母。 不考虑答案输出的顺序。填补下面函数 vec...原创 2020-02-09 23:23:09 · 190 阅读 · 0 评论 -
C++11中整型的几种初始化方法
C++11中整型的几种初始化方法0X00 前言我们都知道,在c++中,最为常见的整型初始化办法是=赋值。但是其实c++11提供了好几种办法。多几种方法,多几种出路。这也是为了更好的方便开发者。话不多说,直接开说。0X10 利用‘=’初始化这是最常见最常用的办法,也是非常符合日常习惯的一种初始化办法。如下:int x=1;这里利用‘=’将x赋值为1。0X11 利用‘()’初始化用...原创 2020-02-07 20:39:29 · 2458 阅读 · 0 评论 -
剑指offer 题18——删除链表的节点
题目一:在O(1)时间内删除链表节点题目: 给定单向链表的头指针和一个节点指针,定义一个函数在O(1)时间内删除该节点,链表节点与函数定义如下:struct ListNode { int m_nValue; ListNode* m_pNext; } ```在单向链表中删除一个节点,常规做法就是从第一个节点开始,依次进入下一节点进行判断,直到找到需要删除的节点的节点...原创 2020-02-05 21:33:06 · 170 阅读 · 0 评论 -
剑指offer 题17——数值的整数次方
数值的整数次方题目: 输入数字n,按顺序打印出从1到最大的n位十进制数。比如输入3,则打印出1,2,3一直到最大的3位数999.1. 陷阱乍一看,似乎很简单,一次循环就能搞定void PrintToMaxOfNDigits_1(int n){ int number=1; int i=0; while(i++<n) number*=10; for(i=1;i<...原创 2020-02-04 22:12:35 · 162 阅读 · 0 评论 -
剑指offer 题16——数值的整数次方
数值的整数次方题目: 实现函数double Power(double base,int exponent),求base得exponent次方。不得使用库函数,同时不需要考虑大数问题因为不需要考虑大数问题,所以看起来似乎很简单,只需要累加就好double Power(double base,int exponent){ double result=1.0; for(int i=0;...原创 2020-02-03 21:16:36 · 191 阅读 · 0 评论 -
剑指offer 题15——二进制中1的个数
二进制中1的个数题目:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如,把9表示成二进制是1001,有2位是1.因此,如果输入9,那么函数输出2有这样一个段子:世上有10种人,一种人知道二进制,而另一种人不知道二进制二进制运算是十分重要的。高效而便捷如果我们按部就班,只看最后一位,但判断之后进行移位,直到最后数完。可以写出以下代码:int NumberOfl(i...原创 2020-02-02 22:18:52 · 234 阅读 · 0 评论 -
n个整数的无序数组,找到每个元素后面比它大的第一个数,要求时间复杂度为O(N)
n个整数的无序数组,找到每个元素后面比它大的第一个数,要求时间复杂度为O(N)今天看到的这样的一题,感觉还是挺有意思的,记录下来它给出了一个函数,填写以下函数完成功能vector<int> FindMax(vector<int> &num){}从函数可以看出传入的无序数组使用vector来存储的,而且我们需要返回一个vector一开始拿到题目,我们很...原创 2020-01-10 20:04:42 · 2870 阅读 · 0 评论