5 JackZhangNJU

尚未进行身份认证

未来的路还很长

等级
TA的排名 4k+

#pragma once 和 #ifndef 的联系和区别?

组织头文件的时候,编译时经常会遇到重复定义的error,这个问题的根源在于一个文件被include多次,如何解决这个问题呢?有下面两种方式1 #ifndef方式比如: #ifndef __SOMEFILE_H__ #define __SOMEFILE_H__ ... ... // 一些声明语句 #endif2 #pragma once方式比如:#pragma on...

2019-08-04 13:04:32

select、poll、epoll等

POSIX概述 同步IO、异步IO、阻塞IO、非阻塞IO,这几个词常见于各种各样的与网络相关的文章之中,往往不同上下文中它们的意思是不一样的,以致于我在很长一段时间对此感到困惑,所以想写一篇文章整理一下。 POSIX(可移植操作系统接口)把同步IO操作定义为导致进程阻塞直到IO完成的操作,反之则是异步IO。 按POSIX的描述似乎把同步和阻塞划等号,异步和非阻塞划等号...

2019-07-21 00:49:47

Socket编程学习总结

读书的时候,每当遇到需要网路通信的时候,总是随便百度一下,然后就随便写写就过去了,对于socket本身并没有太深的认识。因为目前的工作中用到了网络通信,并且在过去写的socket通信一般都是阻塞的,这在项目中是无法忍受的。 因此,本文主要参考网上的多篇博客,然后系统的总结了socket的概念,并给出了编程实例,不喜勿喷。网络通信概念 网络层的ip地址可以唯一标...

2019-07-20 08:12:31

为什么用成员初始化列表会快一些?

首先把数据成员按类型分类 1。内置数据类型,复合类型(指针,引用) 2。用户定义类型(类类型)分情况说明: 对于类型1,在成员初始化列表和构造函数体内进行,在性能和结果上都是一样的 对于类型2,结果上相同,但是性能上存在很大的差别因为类类型的数据成员对象在进入函数体是已经构造完成,也就是说在成员初始化列表处进行构造对象的工作,这是调用一个构造函数,在进入函数体之后,进行的是 对已经...

2018-09-10 15:27:54

C++ 自定义二元谓词函数的写法

写的方法struct cmp { bool operator()(pair<int, int>& a, pair<int, int>& b) { if (a.first == b.first) return a.sec

2018-09-08 15:15:25

增长一下姿势:什么是彩虹表?

https://blog.csdn.net/nie19940803/article/details/76641498https://www.cnblogs.com/yushuo1990/p/6007068.htmlhttps://blog.csdn.net/gscaiyucheng/article/details/17113073

2018-09-05 13:39:06

虚基类调用顺序 + 不能继承的类

https://blog.csdn.net/owen7500/article/details/52432970 https://www.cnblogs.com/haoyuanyuan/archive/2013/04/25/3041250.html

2018-09-05 13:36:24

PDD笔试题:最小字符串

直接递归即可需要注意的地方是set是有序的,所以DFS得到第一个结果one就是最终答案代码如下:#include <iostream>#include <vector>#include <map>#include <set>#include <queue>#

2018-08-30 19:55:54

一般递归与尾递归

参考这个博客一般递归与尾递归

2018-08-15 14:15:07

LeetCode上一道经典的面试题-O(1)实现LRU Cache

参考这个博客这里写链接内容 思路: 每次数据项被查询到时,都将此数据项移动到链表头部(O(1)的时间复杂度) 这样,在进行过多次查找操作后,最近被使用过的内容就向链表的头移动,而没有被使用的内容就向链表的后面移动。 当需要替换时,链表最后的位置就是最近最少被使用的数据项,我们只需要将最新的数据项放在链表头部,当Cache满时,淘汰链表最后的位置就是了。 还有这个博客简单的LRU Ca...

2018-08-09 15:42:12

在 Shell 脚本中调用另一个 Shell 脚本的三种方式

详情参考这个博客,写的很清楚,这个和进程里面的fork,exec很类似

2018-08-06 13:25:50

0交换排序

长度为n的数组乱序存放着0至n-1. 现在只能进行0与其他数的交换,完成以下函数#include <iostream>#include <vector>#include <map>#include <unordered_map>#include <set>#include &a

2018-07-01 18:52:46

C++ 虚函数表指针以及虚函数指针的确定

【摘要】很多教材上都有介绍到虚指针、虚函数与虚函数表,有的说类对象共享一个虚函数表,有的说,一个类对象拥有一个虚函数表;还有的说,无论用户声明了多少个类对象,但是,这个VTABLE虚函数表只有一个;也有的在说,每个具有虚函数的类的对象里面都有一个VPTR虚函数指针,这个指针指向VTABLE的首地址,每个类的对象都有这么一种指针。今天,我们就来解决这个问题,同一个类的不同对象,是不是拥有“相同”...

2018-06-14 14:30:05

this指针到底存放到哪里

那么C++中类成员函数是如何知道哪个对象调用了它?并正确显示调用它的对象的数据呢?当一个对象调用某成员函数时会隐式传入一个参数, 这个参数就是this指针。this指针中存放的就是这个对象的首地址。 这和C中通过向函数传递结构体变量的地址是不是很像?只是传参形式不一样罢了! 在C中我们是手工把结构体变量和函数关联起来的,而C++则是编译器帮我们把类数据和成员函数关联起来的并通过名称粉碎和编译...

2018-06-13 15:09:55

程序员面试金典习题集锦04

参考这个链接如何测量上下文切换时间 首先明白大的数字有什么特点,大的数字= 两个数字的和 - 小的数字,较大的数字。可以用绝对值的做法来做的,构造差值。 令result = (|a+b| + |a-b|) / 2; 那么,如果a > b ,则有: result = a;符合要求 这道题需要注意的地方就是全部是负数的情况 遇到这种题就要...

2018-05-05 14:46:06

程序员面试金典习题集锦03

最直接的方法就是递归,参考这个博客算出有几种括号的放法可使该表达式得出result值 参考这个链接给定一个排序后的数组,包含n个整数,但这个数组已被旋转过多次,找出数组中的某个元素 这样的情况很有可能是两点: 1)使用C风格字符串,导致指针越界访问:严格检查使用c风格字符串 2)使用随机数,导致不同情况下的bug不一样:在log中打印seed,然后复现bug再去排除...

2018-05-05 10:21:35

程序员面试金典习题集锦02

寻找二进制1的个数相等的最大和最小值 最笨的方法,就是暴力求解, 可以通过分析二进制字符串来实现寻找 直接异或,然后求解1的数量即可 我想到的最笨的方法就是直接相加,然后数组求和即可。 感觉应该是可以通过位运算来做的,下面是智力题: ...

2018-05-04 20:39:21

程序员面试金典习题集锦01

这道题很简单,但是不一定可以转换到这个思路上来。 如何使用一个数组实现三个栈? 还有一道关于MinStack的题,这也值得学习, leetcode 155. Min Stack 最小栈的实现 寻找二叉查找树的下一个结点: 寻找二叉树子树的存在与否? ...

2018-05-03 09:45:19

汉诺塔问题

汉诺塔比较经典的实现是利用递归,但也可以利用堆栈。题意理解:有A,B,C三个柱子,将A柱子上的N个盘子(从大到小排列)移到C柱子上,每次只允许移动一个盘子,并且保证每个柱子上的盘子的排列都是从大到小。1、递归实现  假设只有一个盘子,那么只需实现 A->C 这个动作;  如果有两个盘子,那么需要  (1)A->B;  (2)A->C;  (3)B-&g...

2018-05-02 11:08:19

队列的实现

就是考察如何实现一个队列这道题考察的是细节代码如下:#ifndef QUEUE_H#define QUEUE_H#include<cassert>#include<iostream>using namespace std;template<typename T>class Queue{public: Queue(int m...

2018-05-01 20:28:57

查看更多

勋章 我的勋章
    暂无奖章