摘要:
1、二者的作用是一样的,结果也是等价的。就是判断集合是否为空。2、二者是等价的,为什么强调使用empty,因为empty效率更高。3、在STL中,对于一般的集合,empty和size都是常数时间。但是对于list,empty是常数时间,size是线性时间;考虑为什么? 考虑增删操作,对于一般的集合,增删是线性时间,因为涉及到元素的移动,增删的同时也就更新了元素个数。但是对list增删,是常数时间,不会更新节点个数。 因此,对于一般的集合,size是实时更新的,empty与size可认为是等价的。但是对于list:对于empty,只需要检查head是否为end就可以了,为常数时间。对于siz.. 阅读全文
posted @ 2013-11-06 20:42
Andy Niu
阅读(556)
评论(0)
推荐(0)
摘要:
考虑下面的需求,从配置文件中,读取一些数据,这些数据放到一个集合中,获取集合,使用方法A,完成任务。该怎么做?1、首先明确一点,坚决不能让A返回引用。2、方法A在栈上创建集合,返回集合。不存在内存泄漏的问题,但是要付出copy代价。3、方法A在堆上创建集合,返回集合的指针,copy代价很低,但是会存在内存泄漏的问题。4、主调方法创建一个集合,把集合的引用传递给被调方法A,A修改集合的内容。这个不直观,客户要一些东西,方法A要求客户准备一个容器,A在容器中填充内容。5、采用哪种方法,要看具体的使用场景,如果集合内容很小,copy代价小,就不要用指针,否者用指针。6、还要考虑另外一种情况,返回的集 阅读全文
posted @ 2013-11-06 20:21
Andy Niu
阅读(669)
评论(0)
推荐(0)
摘要:
使用正则表达式: ^:b*[^:b#/]+.*$简单说明如下:^:行头$:行尾+:一个或多个*:0个或多个:b:表示空白,匹配空格或者制表符# 表示后面是include,/表示注释^:b*[^:b#/]+.*$ 查找一些行,行的开头有多个空白,后面不是空白,不是#,不是/,这个正则表达式不能剔除 /****/中的后面两行。 阅读全文
posted @ 2013-11-06 19:59
Andy Niu
阅读(1148)
评论(0)
推荐(0)
摘要:
\r:回车符,返回到这一行的开头,return的意思。\n:换行符,到下一行的同一位置,纵坐标相同,new line的意思。\t:制表符,为了在不使用表格的情况下,上下对齐,table的意思。Enter 相当于\n\r,所以Enter的标识为 往下,再往前。当然,\n\r等价于\r\n。 阅读全文
posted @ 2013-11-06 14:17
Andy Niu
阅读(6617)
评论(0)
推荐(1)
摘要:
指针的删除动作,如果是安全的操作,必须保证:1、此指针由new返回,说明对象分配在堆上,而不是在栈上,或者其他位置。2、指向的对象确实不再使用,如果对象还在使用,销毁了对象,指针成为野指针,指向垃圾。 阅读全文
posted @ 2013-11-06 13:50
Andy Niu
阅读(399)
评论(0)
推荐(0)
摘要:
在程序中,只使用 using namespace std; 而不使用其他的名称空间,如using namespace boost; 这样的好处有:1、可以避免不同名称空间中的名称冲突;2、可以很清楚地知道某个东西在哪个名称空间内。因为在std中的东西,不再需要使用std::,而在其他名称空间内的必须使用对应的名称空间。 阅读全文
posted @ 2013-11-06 13:37
Andy Niu
阅读(284)
评论(0)
推荐(0)
摘要:
对于场景:string s = "123456",用"3","4"切分,默认情况下(boost::token_compress_off),切分结果为12,空,56,注意,这里的空不是空格。而是"3","4"之间的空。如果不想要这个空,指定boost::token_compress_on就行了。boost::token_compress_on的意思就是说,以"3","4",切分,当出现34的时候,就把34压缩成整体,用"34"切分。 阅读全文
posted @ 2013-11-06 12:24
Andy Niu
阅读(4968)
评论(0)
推荐(1)
摘要:
1、引用的使用场景:必须指向某个对象(不能指向Null),并且从始至终都指向这个对象。还有一种情况:操作符的返回值要求是引用,这样就可以对它赋值。2、指针的使用场景:不适合使用引用,就使用指针。3、能使用引用,尽量使用引用。因为引用相对更高效,不需要判断指向是否为Null4、引用相对更安全,引用和指针都有不安全的情况,也就是指向的内容被销毁了。5、指针指向的内容被销毁,该指针就是野指针,野指针不是Null指针。产生野指针的情况有: a、指针变量没有初始化,指针变量创建时,取值是随机的,不是Null,因此指针变量定义时,要么初始化为Null,要么初始化为合法的内存。 b、对指针进行了dele.. 阅读全文
posted @ 2013-11-06 12:14
Andy Niu
阅读(435)
评论(0)
推荐(0)