代码改变世界

STL front() ,back()和begin(),end()区别

2013-08-25 19:12 by youxin, 1246 阅读, 0 推荐, 收藏,
摘要:首先看看vector里面的: reference front();const_reference front() const;queue里面的; value_type& front();const value_type& front() const;一般,reference定义为value_type& ,const_reference定义为const value_type&,所以上面2者是等同的。也就是front()返回第一个元素的引用,back()返回最后一个元素的引用。而begin()和end()返回的是迭代器: iterator begin();const 阅读全文

c++ ptrdiff_t 类型

2013-08-25 18:55 by youxin, 11753 阅读, 1 推荐, 收藏,
摘要:ptrdiff_t是C/C++标准库中定义的一个与机器相关的数据类型。ptrdiff_t类型变量通常用来保存两个指针减法操作的结果。ptrdiff_t定义在stddef.h(cstddef)这个文件内。ptrdiff_t通常被定义为long int类型。ptrdiff_t定义在C99标准中。ptrdiff_t标准库类型(library type)ptrdiff_t 与 size_t 类型一样,ptrdiff_t也是一种与机器相关的类型,在 cstddef 头文件中定义。size_t 是unsigned 类型,而 ptrdiff_t 则是 signed 整型[1]。size_t这两种类型的差别体 阅读全文

编程的毛病——C++之父访谈

2013-08-25 05:54 by youxin, 749 阅读, 0 推荐, 收藏,
摘要:原文见:http://www.technologyreview.com/InfoTech/17831/ 翻译:xeon 11/29/2006 在20世纪的80年代和90年代,Bjarne Stroustrup设计并实现了C++程序语言。C++普及了面向对象编程,同时也影响了包括Java在内的诸多其它的程序语言。 C++仍然是“高级”原型计算机语言(保留了自然语言的特性),时至今日仍然有数以百万计的程序员在使用C++。在PC与Internet时代,C++编写出了众多的系统与应用程序。即使如此,C++仍然饱受争议,其主要原因一是臭名昭著地难学难用,一是Stroustrup的设计允许... 阅读全文

C++惯用法:通过成员模板实现隐式转换(Coercion 强迫 by Member Template)

2013-08-25 05:49 by youxin, 554 阅读, 0 推荐, 收藏,
摘要:IntentTo increase the flexibility of a class template's interface by allowing the class template to participate in the same implicit type conversions (coercion) as its parameterizing types enjoy.Also Known As[edit]Motivation[edit]It is often useful to extend a relationship between two types to c 阅读全文

c++ 复制构造函数和赋值函数

2013-08-25 03:27 by youxin, 362 阅读, 0 推荐, 收藏,
摘要:c++ 自动提供了下面这些成员函数1默认构造函数2.复制构造函数3.赋值操作符4.默认析构函数5.地址操作符赋值构造函数copy construtor 用于将一个对象复制到新创建的对象中,也就是说,它用于初始化过程中,而不是常规的赋值过程中。类的copy sconstrutor函数原型通常如下:ClassName(const ClassName & );对于复制构造函数,需要知道2点:何时调用和有何功能。新建一个对象并将其初始化为同类现有对象时,复制构造函数都将调用。这在很多情况下都有可能发生,最常见的情况是将新对象显示地初始化为现有的对象,例如motto是一个String对象,则下面 阅读全文

STL string 模拟

2013-08-25 02:21 by youxin, 345 阅读, 0 推荐, 收藏,
摘要:下面的代码来自c++ primer plus第5版第12章,书中代码写的非常好:// string1.h -- fixed and augmented string class definition#include using std::ostream;using std::istream;#ifndef STRING1_H_#define STRING1_H_class String{private: char * str; // pointer to string int len; // length of string ... 阅读全文

单链表为什么要设置头结点

2013-08-24 15:57 by youxin, 13565 阅读, 7 推荐, 收藏,
摘要:链表中第一个结点的存储位置叫做头指针,那么整个链表的存取就必须是从头指针开始进行了。之后的每一个结点,其实就是上一个的后继指针指向的位置。这里有个地方要注意,就是对头指针概念的理解,这个很重要。“链表中第一个结点的存储位置叫做头指针”,如果链表有头结点,那么头指针就是指向头结点数据域的指针。画一个图吧。头指针就是链表的名字。头指针仅仅是个指针而已。头结点是为了操作的统一与方便而设立的,放在第一个元素结点之前,其数据域一般无意义(当然有些情况下也可存放链表的长度、用做监视哨等等)。有了头结点后,对在第一个元素结点前插入结点和删除第一个结点,其操作与对其它结点的操作统一了。首元结点也就是第一个元素 阅读全文

KMP算法与一个经典概率问题

2013-08-24 02:47 by youxin, 460 阅读, 0 推荐, 收藏,
摘要:考虑一个事件,它有两种概率均等的结果。比如掷硬币,出现正面和反面的机会是相等的。现在我们希望知道,如果我不断抛掷硬币,需要多长时间才能得到一个特定的序列。序列一:反面、正面、反面序列二:反面、正面、正面首先,我反复抛掷硬币,直到最近的三次抛掷结果形成序列一,然后我记下这次我抛掷了多少次才得到了我要的... 阅读全文

转:惊人的答案:平均要取多少个(0,1)中的随机数才能让和超过1

2013-08-24 02:42 by youxin, 741 阅读, 0 推荐, 收藏,
摘要:数学常数最令人着迷的就是,它们常常出现在一些看似与之毫不相干的场合中。 随便取一个 0 到 1 之间的数,再加上另一个 0 到 1 之间的随机数,然后再加上一个 0 到 1 之间的随机数⋯⋯直到和超过 1 为止。一个有趣的问题:平均需要加多少次,才能让和超过 1 呢?答案是 e 次。为了证明这一点,让我们先来看一个更简单的问题:任取两个 0 到 1 之间的实数,它们的和小于 1 的概率有多大?容易想到,满足 x+y<1 的点 (x, y) 占据了正方形 (0, 1)×(0, 1) 的一半面积,因此这两个实数之和小于 1 的概率就是 1/2 。类似地,三个数之和小于 1 的概率则 阅读全文

编程之美--寻找发帖水王(即:求数组主元素)

2013-08-23 15:50 by youxin, 1009 阅读, 0 推荐, 收藏,
摘要:Tango是微软亚洲研究院的一个试验项目。研究院的员工和实习生们都很喜欢在Tango上面交流灌水。传说,Tango有一大“水王”,他不但喜欢发贴,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子总数的一半。如果你有一个当前论坛上所有帖子(包括回帖)的列表,其中帖子作者的ID也在表中,你能快速找出这个传说中的Tango水王吗?分析与解法首先想到的是一个最直接的方法,我们可以对所有ID进行排序。然后再扫描一遍排好序的ID列表,统计各个ID出现的次数。如果某个ID出现的次数超过总数的一半,那么就输出这个ID。这个算法的时间复杂度为O(N* log2N+N)。如果ID列表已经是有序的 阅读全文
上一页 1 ··· 138 139 140 141 142 143 144 145 146 ··· 269 下一页