
C++
Coding.Freshman
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
STL源码之traits技法
获得迭代器的“性质” 最近在拜读侯捷先生的STL源码剖析,当读到traits技法时,感觉非常痛苦,读不太懂,于是想从网上搜一下关于这方面的知识,可是发现网上的解答并不能解决自己的疑惑,于是自己花了很长时间研究这个问题,下面跟大家分享一下我的理解。 首先要说的是,迭代器是特性的,比如说迭代器的5个种类,Input Iterator、Output Iterator、Forward Iterator、B...原创 2018-10-25 00:24:18 · 237 阅读 · 0 评论 -
关联容器的find()成员
关联容器 关联容器自身是有find()的成员函数的,该find()不同于泛型算法中的find(); 具体用法如下: map<T,t> m; m.find(T value); 注意:查找的是键,而不是值。 ...原创 2018-10-05 10:57:03 · 409 阅读 · 0 评论 -
使用new和delete管理动态内存存在的三个常见的问题
忘记delete内存。 忘记释放动态内存会导致人们常说的“内存泄露”问题,值得注意的是查找内存泄露错误是非常困难的,因为通常程序运行了很久之后,真正耗尽内存时,才能检测到这种错误。忘记释放动态内存会导致人们常说的“内存泄露”问题,值得注意的是查找内存泄露错误是非常困难的,因为通常程序运行了很久之后,真正耗尽内存时,才能检测到这种错误。 使用已经释放掉的对象。 释放内存后将指针置为空,有事可以检测...原创 2018-10-31 21:26:04 · 781 阅读 · 0 评论 -
智能指针的陷阱
智能指针可以提供对动态内存分配的内存安全又方便的管理,但是要注意一些陷阱,为了正确使用智能指针,我们必须坚持一些基本规范: 不使用相同的内置指针值初始化多个智能指针。 不delete get() 返回的指针。 不使用get()或者reset另一个智能指针。 如果你使用get()返回的指针,记住当最后一个对应的智能指针销毁后,你的指针就会变为无效的。 如果你使用智能指针管理的资源不是new分配的内...原创 2018-10-31 22:17:57 · 552 阅读 · 0 评论 -
讲解类型转化----C++
隐式转化 隐式转化是自动执行的,不需要程序员的介入,有时甚至不需要程序员了解。 举个例子: int ival = 3.555 + 3; 加法的两个运算对象的类型不同,3.555为double类型,而3是int型,C++不会将两个不同类型的值直接想加,而是根据类型转换规则将两个类型统一之后再求值,在这个例子中,3被提升为double型,然后两个double型想加,最后再转化为int型。 何时发生类...原创 2018-10-30 22:59:34 · 296 阅读 · 0 评论 -
如何在linux上用g++编译Cpp
首先,你要用vim将程序写好,比如 //hello.cpp #include <iostream> using namespace std; int main() { cout<<"hello,cpp"; return 0; } 写好之后,在命令模式输入wq保存退出,然后在终端使用如下指令。 g++ hello.cpp -o hello //编译成功之后,用...原创 2018-11-03 20:20:42 · 855 阅读 · 0 评论 -
如何用cin读入空格
在我们使用cin读入字符时,默认是跳过中间的空格以及可能的制表符和换行符,那么,如何让其不跳过空格呢。我们可以使用操作符noskipws来实现。 cin>>noskipws;//设置cin读取空白符; char ch; while(cin) cout<<ch; cin>>skipws; //恢复默认状态。 这样,程序就会读取空格了。 ...原创 2018-11-02 17:10:06 · 20158 阅读 · 2 评论 -
阻止拷贝的三种方法--Cpp
当一个对象是独一无二的时候,为这个对象做一个副本有点没道理,所以我们应阻止对它进行的拷贝,但是,阻止这一动作并不是很直观,通常来说,你不希望class的某一功能,只要不声明对应的函数就行了,但这个策略对拷贝构造函数和赋值操作符思是无效的,因为如果你不声明它们,编译器会替你声明一个默认的,那么该如何解决这个问题呢,通常来说,可以采取如下三种方法。 将拷贝构造函数和赋值操作符声明为私有成员函数,并且...原创 2018-11-02 20:42:27 · 690 阅读 · 0 评论 -
为什么复制构造函数的参数必须是引用类型?
如果一个函数是通过值传递(pass by value)的话,那么它真正传递的其实是实参的副本,该副本产生必定会调用复制构造函数。那么,试想一下,如果我们的复制构造函数是通过值传递的话,它就会调用它本身来产生一个副本,就这样会无限递归下去,而如果传递引用,就不会产生副本,也不会调用复制构造函数,问题得以解决。 ...原创 2018-11-04 22:45:52 · 1659 阅读 · 1 评论