上一页 1 ··· 39 40 41 42 43 44 45 46 47 ··· 58 下一页
  2013年11月6日
摘要: 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)
  2013年11月5日
摘要: 容器的end()方法,返回一个迭代器,需要注意:这个迭代器不指向实际的元素,而是表示末端元素的下一个元素,这个迭代器起一个哨兵的作用,表示已经处理完所有的元素。因此,在查找的时候,返回的迭代器,不等于end(),说明找到了目标。等于end(),说明检查了所有元素,没有找到目标。 阅读全文
posted @ 2013-11-05 21:07 Andy Niu 阅读(1002) 评论(0) 推荐(0)
摘要: 1、在map中,由key查找value时,首先要判断map中是否包含key。2、如果不检查,直接返回map[key],可能会出现意想不到的行为。如果map包含key,没有问题,如果map不包含key,使用下标有一个危险的副作用,会在map中插入一个key的元素,value取默认值,返回value。也就是说,map[key]不可能返回null。3、map提供了两种方式,查看是否包含key,m.count(key),m.find(key)。4、m.count(key):由于map不包含重复的key,因此m.count(key)取值为0,或者1,表示是否包含。5、m.find(key):返回迭代器, 阅读全文
posted @ 2013-11-05 20:58 Andy Niu 阅读(72470) 评论(0) 推荐(3)
上一页 1 ··· 39 40 41 42 43 44 45 46 47 ··· 58 下一页