- 博客(7)
- 收藏
- 关注
原创 C++的浅拷贝出现的错误
之前看一些资料提到浅拷贝的问题,即在复制对象时,只是对对象中的数据成员进行简单的赋值,默认拷贝构造函数执行的也是浅拷贝。如果对象中存在动态成员,如指针,那么仅仅做浅拷贝是不够的,并且容易引发错误,最经典的例子:#include <iostream>#include <stdio.h> using namespace std;class A{ public: A(){m_p
2016-07-30 18:39:06 924 1
原创 Linux网络编程:recv的返回值
recv是网络编程中用于TCP传输接收数据的接口,由于工作中一直没有接触到网络编程,虽然知道这个函数,但是没有使用经验,所有对接口细节不是很了解。直到前阵子在项目中调试第三方的源码时,跟踪到这个函数,才发现它的返回值和我想象的不太一样。recv函数的原型:ssize_t recv(int sockfd, void* buf, size_t len, int flags);之前知道的是如果读取成功,会
2016-07-29 23:41:44 7721 3
原创 由static_cast和dynamic_cast到C++对象占用内存的分析
static_cast和dynamic_cast是C++的类型转换操作符。编译器隐式执行的任何类型转换都可以由static_cast显式完成,即父类和子类之间也可以利用static_cast进行转换。而dynamic_cast只能用于类之间的转换。那么dynamic_cast的存在还有什么意义呢?因为dynamic_cast提供了一个重要的特性:运行时类型检查来保证转换的安全性。用static_ca
2016-07-27 21:07:55 1796
原创 找出给定字符串中第一个不重复的字符
给定一串字符串,找出其中第一个不重复的字符。 如:输入”abcddcaeb1~soop”,输出’e’方法一思路:定义一个list<char> recd,对输入字符串str进行遍历,分别查找每个字符是否出现在recd中,如果存在,则把recd中的该字符删除,如果不存在,则将该字符放进recd中。即用recd存放字符串中只出现了一次的字符。那么当遍历完str后,recd的第一个元素就是我们要找的字符,
2016-07-26 20:10:37 7154
原创 把两个从大到小的有序链表合并成一个链表,新的链表是一个从小到大的有序链表
实现一个函数,把两个从大到小的有序链表合并成一个链表,新的链表是一个从小到大的有序链表。这道题可以分成两个思路: 1.先把两个链表合并成一个链表,合并后的链表从大到小排序 2.将链表逆置,得到从小到达排序的链表链表合并最粗暴的方法,遍历第一个链表的节点,和第二个链表的每一个节点比较,找出最小者作为链表的新节点插入,这个方法的时间复杂度为O(len1*len2)。由于两个链表是有序的,因此我们可以
2016-07-16 22:59:16 16404
原创 编程实现打印出26个字母的所有子集
一看到这道题可能没有什么思路,那么先从字母比较少数 的情况开始观察:假设只有A B C三个字母,那么他们的所有子集是什么? {A},{B},{C},{A,B},{A,C},{B,C},{A,B,C},空集根据上面的列举我们可以画出下面的表: A B C 1 0 0 0
2016-07-16 11:51:33 2784
原创 shell编程:递归遍历目录下的所有文件并统一改名
遇到一道题目,如何把某个目录下的每个文件统一在名字前加上”abc”,用shell实现首先分析,一个目录下除了文件,还可能存在目录,这里可以看出需要有递归操作,如果是文件直接改名,目录则进入然后进行遍历 如何实现遍历?我们写一个函数:function travFolder(){ #echo "travFolder" flist=`ls $1` cd $1 #echo
2016-07-08 19:55:12 12489
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人