摘要:
1 // run in windows: std::system("pause") 2 #include 3 #include 4 #include 5 #include 6 7 using namespace std; 8 using namespace std::placeholders; 9 10 template 11 using DeleteFunc =... 阅读全文
摘要:
swap函数是c++中一个常用的函数,用于交换两对象的值,此外还用于在重载赋值运算符中处理自赋值情况和进行异常安全性编程(见下篇),标准模板库中swap的典型实现如下: 缺省版本的Swap函数包含三次对象的复制:lhs复制到temp,rhs复制到lhs,temp复制到rhs。然而在一些情况下,这种复 阅读全文
摘要:
需要注意的地方: ①二叉搜索树删除一个指定结点R,若R为叶子结点,则将R的父结点中指向R的指针改为指向nullptr;若R的左右子结点一个为空,一个非空,则将R的父结点中指向R的指针改为指向R的非空子结点;若R有两个非空子结点,则找出R的右子树中的最小值结点,将其删除并将R的值置为该最小值结点的值。 阅读全文
摘要:
代码如下: 阅读全文
摘要:
要注意使用断言判断传入的字符串非空。 1 #include <cassert> 2 3 //求字符串长度 4 size_t StrLen(const char *str) 5 { 6 assert(str != nullptr); 7 size_t len = 0; 8 while (*str++ 阅读全文
摘要:
考虑下面一个二叉树的实现: 1 enum Operator {PLUS = 1, MINUS = 2, MULTIPLY = 3, DIVIDE = 4}; 2 3 class BinTreeNode 4 { 5 public: 6 virtual ~BinTreeNode() {}; 7 virt 阅读全文
摘要:
c++有时候需要为类的某个成员函数重载常量与非常量的版本,定义常量版本是为了保证该函数可作用于常量类对象上,并防止函数改动对象内容。但有时两个版本的函数仅仅是在返回的类型不同,而在返回前做了大量相同的工作,那么代码会有大量重复,由此也会带来编译时间和代码膨胀等开销。例如下面的类成员函数: 1 #in 阅读全文
摘要:
接上篇:http://www.cnblogs.com/jzincnblogs/p/5217688.html,这篇主要记录编程过程中需要注意的地方以及遇到的一些问题及解决方法。 一、gethostbyname(),inet_ntoa()等函数已经过时 使用上面两个函数时编译器会报错并提示函数已经是过时 阅读全文
摘要:
接上篇http://www.cnblogs.com/jzincnblogs/p/5213978.html,这篇主要记录编程方面的重点。 客户端使用了Windows Socket提供的API,支持上传、下载、删除、查看文件,断点续传,二进制/ASCII模式切换,被动模式切换,记录操作日志等功能。 代码 阅读全文
摘要:
之前使用c++实现了一个FTP客户端,在这里做一些记录。 一、需要注意的几点 ①FTP是一种文件传输协议,基于TCP,所以客户端与服务器建立的连接是可靠、安全的,并且要经过三次握手的过程。 ②FTP传输数据默认采用二进制模式,即将文件内容转换为二进制表示后再传送,而若HTML等文本文件传输时需要转换 阅读全文