
c++
逆风的方向我在飞翔
这个作者很懒,什么都没留下…
展开
-
继承(子类与父类构造函数的关系)
#include<iostream>using namespace std;class Base1{public: Base1() { cout<<"Base1()"<<endl; } ~Base1() { cout<<"~Base1()"<<endl; }};class Base2{public:原创 2016-03-17 20:56:58 · 613 阅读 · 0 评论 -
用模板实现顺序表
#include<iostream>using namespace std;#include<string>template <class T>class Seqlist{public: Seqlist() :_sz(0) ,_capacity (0) ,_data (NULL) { } ~Seqlist ()原创 2016-08-25 14:38:38 · 339 阅读 · 0 评论 -
固定数字排除
//问题:有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位#include<iostream>using namespace std;#define N 100int Num(){ int n ,m=0,j=0,k=0; cin >> n; int num[N]; int * p = num;转载 2016-11-10 23:30:57 · 279 阅读 · 0 评论 -
FTP服务器
模拟实现Ftp服务器源码:https://github.com/uagvdu/Ftp_Server 一、什么是FTP协议: 是用于在网络上进行文件传输的一套标准协议,使用C/S模式,位于TCP/IP协议栈的应用层,通过支持该协议的服务器,可以完成本地上传文件和下载服务器文件到本地等操作。 FTP是一个8位的客户端-服务器协议,能够操作任何类型的文件而不需要进一步原创 2017-07-27 14:27:08 · 1173 阅读 · 0 评论 -
图解FTP的主动模式与被动模式以及客户端设置
主动模式(PORT)如下图所示,用户主机直接暴露在互联网中,用户连接FTP SERVER使用主动模式遵循以下一个过程:用户主机一个随机端口连接FTP SERVER的TCP21端口进行协商; 用户主机告诉FTP SERVER,我的XXXX端口已经打开,你可以放心大胆的连过来;然后FTP SERVER就用TCP20端口连接用户主机的XXXX端口,数据传输开始。被转载 2017-07-27 23:21:11 · 17374 阅读 · 0 评论 -
C++成员函数作为回调函数的问题
参考 链接:https://www.zhihu.com/question/19801131/answer/27459821http://blog.youkuaiyun.com/ksn13/article/details/40538083http://blog.youkuaiyun.com/xiaominggunchuqu/article/details/543420641. 编程分两类一,原创 2017-12-20 10:24:19 · 1362 阅读 · 0 评论 -
C++代码往数据库插入数据--failed
问题描述: 用户已经创建却始终无法插入数据成功: 方法: create user 'admin'@'localhost' grant all privileges on *.* to admin@localhost identified by '2582'原因:在于未授权,你必须给该用户授予权限:增删查改等,才能正确插入数据原创 2018-01-31 16:46:32 · 1268 阅读 · 0 评论 -
编译出现函数未定义问题
头文件进行声明库文件进行实现原创 2018-07-27 17:16:07 · 2919 阅读 · 0 评论 -
gdb查看堆栈--多线程服务器应用程序
第一种方法: pstack 进程id 可以用此方法查看进程调用堆栈,此方法只能大概了解多线程进程的堆栈调用情况,但如果想要查看变量或调出第几层栈的详细信息就达不到要求,命令执行结束后会自动退出,但不会影响源程序的状态。第二种方法: 针对于 想进入程序内部查看,并实时查看栈信息,以下为方法步骤: a。在shell下执行gdb命令 b。 attach 线程 i...原创 2018-08-14 10:02:50 · 3137 阅读 · 1 评论 -
using namespace 与 using 的区别
eg: (1) using namespace Poco::Utils::Values ,这种情况就和using namespace std一样,以后调用std内部的cout就不需要 std了,直接cout即可,这种方式是域内部公开。 (2) using Poco::Utils::Values , 与第一种相反,此处调用 Values域下的函数时Values...原创 2018-08-06 17:12:22 · 4135 阅读 · 0 评论 -
Poco::Util::Timer 中有关schedule和scheduleAtFixedRate的区别
一、此处的函数原型为:(1) void scheduleAtFixedRate(TimerTask::Ptr pTask, long delay, long interval );(2)void schedule(TimerTask::Ptr pTask, Poco::Clock clock, long interval );二、总结: 不懂得话可以用下面根据下面代码的结果...原创 2018-09-21 17:37:39 · 697 阅读 · 0 评论 -
C++类成员指针没有被初始化
最近经常犯的一个小错误:即当类内部成员属性为指针时,记得一定要进行初始化,否则会出现随机值,野指针的问题。原创 2018-09-28 17:48:14 · 3485 阅读 · 3 评论 -
c++ String 类的简单实现和写时拷贝
#define _CRT_SECURE_NO_WARNINGS 1#include<iostream>#include<string>using namespace std;class String {public: friend ostream& operator<<(ostream& os, String& str) ; String() : _str(new原创 2016-08-21 14:11:40 · 481 阅读 · 0 评论 -
用模板实现单链表
#include<iostream>using namespace std;template <class T>struct Node{ T _data; Node* next; Node(const T& d) :_data(d) ,next(NULL) {}};template <class T>class LinkLis原创 2016-08-29 23:17:32 · 500 阅读 · 0 评论 -
反转链表
解一: 将两个节点逆序非常容易,但是大于两个的时候 就需要考虑:如何在逆序的时候注意死循环:即只有当cur和tmp指的都是当前节点的时候,cur ->next = prev ,就会发生死循环, 而偏偏这个情况很容易发生/*struct ListNode { int val; struct ListNode *next; ListNode(int x) :原创 2016-06-20 00:26:08 · 302 阅读 · 0 评论 -
c++实现顺序表
//实现顺序表#include<iostream>#include<string>using namespace std;#define space 2class Seqlist{public: Seqlist() //构造 :_data(new int[space]) ,_capacity(0) ,_size原创 2016-03-26 19:09:27 · 717 阅读 · 0 评论 -
二叉树前中后序遍历(递归)
中途对于递归总是理不清,后来看了代码和书才想通:递归==递+归:必须要有递归结束条件,可以不是返回值,若调用一个递归的主算法为第0层算法,则从主算法调用递归算法为进入第1层调用,从第i层递归调用本算法为进入第i+1层,反之,退出第i层递归调用,则返回至第i-1层调用,简单讲:就是当第i+1层达到了递归结束条件,就会回到第i层递归(当时一直认为直接执行到第i+1层,就不再返回了。呵呵),为了保证递归调原创 2016-04-26 09:36:20 · 1345 阅读 · 0 评论 -
autoptr的实现
#include<iostream>using namespace std; //智能指针主要 在于即使忘了delete,他也能自己释放堆内存空间,只要能做到这一点,那就是智能指针。。。。。。。。别让new开辟上的空间被重复释//放,以及别让new开辟的空间没有释放,这就是智能指针。template<class T>class Auto_ptr{public: Auto_pt原创 2016-04-09 21:47:02 · 499 阅读 · 0 评论 -
堆的实现
//头文件:景.h#pragma once#include<iostream>#include<assert.h>#include<vector> /* 堆实际上是一棵完全二叉树 对于数组来说它的数据存放位置是随意的,实现堆,实际上就是实现一个具有特殊结构的数组, 目的就是将数组的数据变得有序或者有优先级,一个数组,既可以看作一行原创 2016-05-11 20:44:01 · 421 阅读 · 0 评论 -
堆排序
#pragma once#include<iostream>#include<assert.h>#include<vector>using namespace std;class _Heap{public: _Heap() { } _Heap(int *a,int n) { //建大堆 for(int i = (n-原创 2016-05-12 00:46:30 · 468 阅读 · 0 评论 -
对称矩阵的缩放存储
公式记清是最主要的一步,就是因为我公式没记清,浪费了太多时间 :对称矩阵缩放,目的就是为了节省空间,当矩阵很大时,节省的空间就很可观, 编写该程序的最主要问题在于:考虑清楚,当将下三角创建好之后,如何让上三角的元素关于对角线对称?这就利用到公式:**对称矩阵里的中任一元素在一维数组中的下标k 与i,j的对应关系为:当i>=j,k=i*(i+1)/2+j;当i<j,k=j*(j+1)/2+i**原创 2016-04-18 18:57:30 · 723 阅读 · 0 评论 -
稀疏矩阵的压缩存储和转置
稀疏矩阵的特点:零元多,非零元远少于零元,存储数据没什么规律 因此可以采用只存储非零元素的方法来进行压缩存储(为了节省空间)。所以在进行压缩存储的时侯需要存储非零元素值的同时还要存储非零元素在矩阵中的位置,即非零元素所在的行号和列号,也就是在存储某个元素比如aij的值的同时,还需要存储该元素所在的行号i和它的列号j,这样就构成了一个三元组(row,col,value)的线性表。 也可以用原创 2016-04-19 13:16:06 · 761 阅读 · 0 评论 -
将空格用%20替换
#include<iostream>using namespace std;class Solution {public: void replaceSpace(char *str,int& length) { int k = length; int count = 0; int i; if(str==NULL)原创 2016-05-05 19:29:35 · 789 阅读 · 0 评论 -
c,c++函数重载的区别
1 在C++ 程序中调用被 C 编译器编译后的函数,为什么要加 extern “C” ? 答:C++语言支持函数重载,C 语言不支持函数重载。函数被C++编译后在库中的名字 与C 语言的不同。假设某个函数的原型为:int Add(int x, int y); 该函数被C 编译器编译后在库中的名字为_Add , 而C++编译器则会产生像 ?Add@@YAHHH@Z之类的名字。所以原创 2016-06-25 16:08:31 · 878 阅读 · 0 评论 -
临时变量的一些细节
一 :临时变量产生之值传递::(值传递包括指针传递)1 。非引用的参数传递 :实参有自己的变量空间,当开始调用函数时, 形参并不会自己申请内存单元,在传递(内置类型)实参时,先将实参的值放到寄存器中,再执行push eax指令,对参数进行压栈在执行”main函数语句中的Add(a,b)函数时”先进行以下的步骤: :mov eax,dword ptr[ebp - 8]原创 2016-06-30 00:01:10 · 5431 阅读 · 5 评论 -
复数类的实现
#include <iostream>using namespace std;//5+2iclass complex{public: complex(int real = 0,int image = 0) :_real(real) ,_image(image) { } complex operator+(const comple原创 2016-07-04 16:31:17 · 409 阅读 · 0 评论 -
面向对象(oop)与面向过程(opp)的区别
面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。 例如五子棋,面向过程的设计思路就是首先分析问题的步骤: 1、开始游戏, 2、黑子先走, 3、绘制画面, 4、判定输赢, 5、轮到白子,...转载 2019-07-12 14:50:57 · 1285 阅读 · 0 评论