随笔分类 -  C/CPP学习

上一页 1 ··· 4 5 6 7 8 9 10 下一页
摘要:约定: A -> B : T = type 含义是把参数 A 传入以 B 为模板类型参数, typename 为 T 的模板中时, T 的类型会被推断为 type. 其中, any 指任何类型, |T| 为实参类型, T = error 意味着错误.|T| -> T&& : T = T&T&& ->... 阅读全文
posted @ 2015-01-07 19:29 wu_overflow 阅读(176) 评论(0) 推荐(0)
摘要:之前的一篇博客中已经提到过了, 使用模板的目的是提高效率, 可是会因为用户输入的不可预知性导致计划中的函数没有匹配到, 而是被模板函数接收, 所以我们的策略就是, 使用 SFINAE 这个 trick:templatevoid LogAndAdd(T &&name){ LogAndAddImp... 阅读全文
posted @ 2015-01-07 16:17 wu_overflow 阅读(218) 评论(0) 推荐(0)
摘要:考察以下代码:std::multiset names; //global data structurevoid LogAndAdd(const std::string &name){ auto now = //got... 阅读全文
posted @ 2015-01-05 00:48 wu_overflow 阅读(253) 评论(0) 推荐(0)
摘要:还是在 C++ 吧里的问题, 有人问怎样终止形如 while(std::cin >>word){/* do something */} 的情况, 除了用 Ctrl +C.我原以为下面定是一群人回答 Ctrl + Z, 结果还是我一厢情愿, 不少人还说那是个死循环, 非要加个条件 break 出去才能... 阅读全文
posted @ 2014-12-17 19:12 wu_overflow 阅读(242) 评论(0) 推荐(0)
摘要:在贴吧里看到一个求助的, 他是这么做的:char month[] = {"一月", "二月", ......}; //我就不写全了然后表示为何出错. 我觉得这算是宽字符, 所以改成了:wchar_t month[] = {L"一月", .....}; //没错我连第二个都懒得打感觉就万事大... 阅读全文
posted @ 2014-12-14 02:31 wu_overflow 阅读(171) 评论(0) 推荐(0)
摘要:1. 容器(constainers) 现成的模版形式的数据结构, 如 vector, deque, set, map... 主要用来存放数据;2. 算法(algorithms) 我倾向于叫做泛型算法, 常见的有 sort, search, copy, erase... 主要用函数模板实现;3. 迭代... 阅读全文
posted @ 2014-12-13 23:41 wu_overflow 阅读(218) 评论(0) 推荐(0)
摘要:当我们设计一个 class, 并以一个 class object 指定给另一个 class object 时, 我们有三种选择:1. 什么也不做, 实施默认行为2. 提供一个 explicit copy assignment operator3. 明确拒绝把一个 class object 指定给另一... 阅读全文
posted @ 2014-12-13 23:13 wu_overflow 阅读(263) 评论(0) 推荐(0)
摘要:我一向赞同一个理念: 用代码实现简单逻辑是不需要注释的, 因此我也就不写注释了, 直接上代码:#include #include #include inline int Parent (const int i){ return std::move( i % 2 ? (i - 1)... 阅读全文
posted @ 2014-12-10 02:06 wu_overflow 阅读(610) 评论(0) 推荐(0)
摘要:有时代码看起来是正确的, 可实际上就会有一些没想到的疏忽, 考察以下代码:std::deque ideq{ 5, 13, 2, 25, 7, 17, 20, 8, 4};std::priority_queue priorityQueue (ideq.begin(), ideq.end());for ... 阅读全文
posted @ 2014-12-08 11:22 wu_overflow 阅读(117) 评论(0) 推荐(0)
摘要:前几天处理工作方面的事情, 确实耽误了几天, 导致博客停更了, 今天上午看到算法导论的堆排序, 想用 C++ 实现下, 就当练练手了.算法导论里使用的是起始编号为 1 的容器, 那么实现的方法要不就是把 STL 容器打包, 自己建一个起始编号为 1 的容器, 要不就按照起始编号为 0 的来. 想了一... 阅读全文
posted @ 2014-12-07 17:25 wu_overflow 阅读(303) 评论(0) 推荐(0)
摘要:考虑下面这个虚拟继承:class Point3d: public virtual Point{ Point3d(float x = 0.0, float y = 0.0, flloat z = 0.0) :Point(x, y). _z(z){} Pooint(const ... 阅读全文
posted @ 2014-11-30 13:38 wu_overflow 阅读(465) 评论(0) 推荐(0)
摘要:继承前的准备前一篇博客的三个 Point 声明, 将为继承性质以及某些操作的动态决议做准备, 现在咱们限制对_z 的存取操作:class Point{public: Point(float x = 0.0, float y = 0.0, float z = 0.0) :_x(x), _y... 阅读全文
posted @ 2014-11-29 13:17 wu_overflow 阅读(251) 评论(0) 推荐(0)
摘要:考虑以下代码:Point global; //1)Point Foobar(){ Point local; //2) Point *heap = new Point; //3) *heap = local; ... 阅读全文
posted @ 2014-11-28 20:29 wu_overflow 阅读(252) 评论(0) 推荐(0)
摘要:考察以下代码:class AbstractBase{public: virtual IBase() = 0; virtual Interface() const = 0; virtual const char* Member() const {return _memb... 阅读全文
posted @ 2014-11-27 17:00 wu_overflow 阅读(393) 评论(0) 推荐(0)
摘要:下面是 Point class 的一个加法运算符的可能实现内容:class Point{ friend Point opsrator+(const Point&, const Point&);};Pointopsrator+(const Point &lhs, const Poi... 阅读全文
posted @ 2014-11-25 14:56 wu_overflow 阅读(595) 评论(0) 推荐(0)
摘要:nonmember friend 或 nonstatic member 或 static member 函数都会被转化为相同的形式, 因此三者的效率完全相同.另外, inline member function 的效率一直是最高的(前提是简单操作), 优化后的效率更是高, 这是因为编译器会将被视为不... 阅读全文
posted @ 2014-11-24 20:51 wu_overflow 阅读(292) 评论(0) 推荐(0)
摘要:考虑下面的 virtual base class 派生体系:class Point2d{public: Point2d(float = 0.0, float = 0.0); virtual ~Point2d(); virtual void Mumble(); virtual ... 阅读全文
posted @ 2014-11-24 15:32 wu_overflow 阅读(248) 评论(0) 推荐(0)
摘要:在多重继承中支持 virtual function, 其复杂度围绕在第二个及后继的 base classes 上, 以及必须在执行期调整 this 指针这一点, 以以下的 class 体系为例:class Base1{public: Base1(); virtual ~Base1(); ... 阅读全文
posted @ 2014-11-24 12:41 wu_overflow 阅读(445) 评论(0) 推荐(0)
摘要:看过之前的 virtual function可以知道其实现模型: 每一个 class 有一个 virtual table. 内含该 class 之中 有作用的 virtual function 地址, 然后每个 object 有一个 vptr, 指向 virtual table 的所在. 在这一节中... 阅读全文
posted @ 2014-11-23 16:58 wu_overflow 阅读(193) 评论(0) 推荐(0)
摘要:如果一个 normalize() 是一个 virtual member function, 那么以下的调用:ptr->normalize();将会被内部转化为:(*ptr->vptr[1])(ptr);其中:vptr 表示由编译器生成的指针, 指向 virtual table, 它被安插在每一个声明... 阅读全文
posted @ 2014-11-23 14:15 wu_overflow 阅读(396) 评论(0) 推荐(0)

上一页 1 ··· 4 5 6 7 8 9 10 下一页