
C++
文章平均质量分 71
John2King
machine learning & computer vision 小白
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
类的设计原则
开闭原则 Software entities (classes, modules, function, etc.) should be open for extension, but closed for modification. 软件实体(模块,类,方法等)应该对扩展开放,对修改关闭。 开闭原则(OCP:Open-Closed Principle)是指在进行面向对象设计(OOD:Obje转载 2016-06-17 14:34:46 · 557 阅读 · 0 评论 -
读书笔记:C++ primer 5th edition--chapter16.模板与泛型编程
part1.定义模板 1.模板是泛型编程的基础 2.一个模板就是一个编译器用来生成特定类类型或函数的蓝图。 3.标准库算法都是函数模板,标准库容器都是类模板。 4.除了定义类型参数,也可以在模板中定义非类型参数,表示一个值,而非类型。 1)我们通过特定的类型名而非关键字class或者typename来指定费类型参数。 template ... 2)一个非类型参数可以是一个整型,或者原创 2016-10-16 19:01:32 · 595 阅读 · 0 评论 -
读书笔记:C++ primer 5th edition--chapter19.特殊工具与技术
以下是c++未被广泛应用的特征。 part1.控制内存分配 1.可以重载new与delete。一共有八个版本,可以重载任意一个,但是要求自定义版本必须位于全局作用域或者类作用域。 2.demo void *operator new(size_t size){ if (void * mem = malloc(size) return mem; e原创 2016-10-20 00:18:45 · 392 阅读 · 0 评论 -
读书笔记:C++ primer 5th edition--chapter9.顺序容器
part1.概述 1.类型:vector,deque,list,forward_list,array,string 2.与内置数组类似,array对象大小固定,不支持添加删除。 3.forward_list为了保证性能,不提供size操作 4.一般用vector 5.如果程序只在读写时需要再中间插入,随后需要随机访问元素,则 1)为了避免在中间插入,可以通过用vector添加,并用so原创 2016-10-07 21:35:20 · 346 阅读 · 0 评论 -
读书笔记:C++ primer 5th edition--chapter8.IO Lib
part1.IO类 1.进行IO操作的函数通常以引用方式传递和返回流。而且是const的 2.输出缓冲,因为cin和cerr都关联到cout,因此读cin或者写cerr都会刷新缓冲区 3.除了endl,还有不加任何字符的刷新,flush;以及添加空字符然后刷新的ends 4.可以设置unitbuf和nounitbuf,那么之间的数据会立即刷新 part2.文件和strin原创 2016-10-07 21:34:25 · 329 阅读 · 0 评论 -
读书笔记:C++ primer 5th edition--chapter 6.函数
part1.参数传递 1.数组形参,可使用标准库规范 void print(const int *beg, const int *end){ while(beg != end) cout } usage: int j[2] = {0, 1} print(begin(j), end(j)) 也可以显示传递表示原创 2016-10-06 21:50:21 · 482 阅读 · 0 评论 -
读书笔记:C++ primer 5th edition--chapter 3.字符串,向量,数组
part1.String 1.头文件不要包含using,因为头文件内容会被拷贝到所有引用它的文件中去。容易导致冲突。 2.string s4(10, ‘c’) => cccccccccc 初始化10个c的string 3.函数:s.empty() s.size() 4.string对象会自动忽略开头的空白(空格符,换行符,制表符) 5.使用c++版本的C标准库(cstdio ra原创 2016-10-06 21:48:32 · 345 阅读 · 0 评论 -
读书笔记:C++ primer 5th edition--chapter18.用于大型程序的工具
part1.异常处理 1.用类去管理资源,而非显式去释放,因为异常发生的时候,析构函数一定会执行,而手动释放的代码可能不会执行。 2.catch(...)会捕获所有异常,因此应该将其置于其他catch的最后。 3.noexcept表示函数不会抛出异常。 part2.命名空间 1.多个库将名字放置在全局命名空间将引命名空间污染。 2.每个命名空间是一个作用域,可以是不连续的。命名原创 2016-10-19 00:12:04 · 377 阅读 · 0 评论 -
读书笔记:C++ primer 5th edition--chapter17.标准库特殊设施
part1.tuple类型 1.一个tuple可以有任意数量的成员。每个确定tuple类型的成员数目是固定的。是一个快速而随意的数据结构。 2.构造函数是explicit,必须使用直接初始化: tuple threeD{1, 2, 3}; 3.make tuple使用初始值的类型来推断tuple类型。 auto item = make_tuple( “0-999-xxx”,3, 20.0原创 2016-10-18 01:30:13 · 390 阅读 · 0 评论 -
读书笔记:C++ primer 5th edition--chapter15.OOP
part1:概述 1.OOP核心思想: 数据抽象,可以将类的接口与实现分离 使用继承,可以定义相似的类型并对其相似关系建模 动态绑定,可以在一定程度上忽略相似类型的区别,以统一的方式管理他们的对象 2.使用基类的引用或指针调用一个虚函数将发生动态绑定 part2.定义基类和派生类 1.基础类需要定义一个虚析构函数,即使该函数不执行任何实际操作。 2.基础类需要把它的两种成员原创 2016-10-14 00:17:57 · 577 阅读 · 0 评论 -
读书笔记:C++ primer 5th edition--chapter14.重载运算与类型转换
part1.基本概念 1.重载运算符函数的参数数量与该运算符作用的运算对象数量一样多。如果一个运算符函数是成员函数,则this绑定到左侧运算对象上。函数的参数数量会比运算对象数量少一个。 2.只能重载已有运算符。不能发明,比如** 3.可以直接调用一个重载的运算符函数 //二者等价 data1 += data2; data1.operator+=(data2); 4.不应该重载逗号,原创 2016-10-13 00:22:51 · 345 阅读 · 0 评论 -
读书笔记:C++ primer 5th edition--chapter13.拷贝控制
part1.拷贝、赋值与销毁 1.拷贝构造函数,拷贝赋值运算符,移动构造函数,移动赋值运算符,析构函数对应的操作称为拷贝控制操作 2.拷贝构造函数 1)第一个参数必须为引用类型。因为在函数调用过程中,具有非引用类型的参数要进行拷贝初始化。否则构造函数调用无法成功。 2)由于常被隐式的使用,所以不能是explicit 3)合成拷贝构造函数,对类类型成员,会试用期拷贝构造函数来拷贝,内置类型原创 2016-10-12 01:32:23 · 395 阅读 · 0 评论 -
读书笔记:C++ primer 5th edition--chapter12.动态内存
part1.智能指针 1.是一种模板。 2.通用的操作: shared_ptr > p2; if( p2 ){…}//若p2指向一个对象则为true p2.get() //返回p2中保存的指针 3.shared_ptr独有操作: make_shared (args); //最安全的分配和使用动态内存的方法 share原创 2016-10-11 00:14:53 · 538 阅读 · 0 评论 -
读书笔记:C++ primer 5th edition--chapter11.关联容器
part1.概述 1.关联容器中的元素是按关键字来保存和访问的,顺序容器是按它们在容器中的位置来顺序保存访问的。 2.8个关联容器。不同之处有三:1)set/map 2)是否允许重复关键字 (multi)3)顺序还是无序(unordered)。 3.关联容器也是模板。 part2.map 1.如果map不含key,那么下标运算会创建新元素。eg:++word_count[ wo原创 2016-10-10 00:51:16 · 391 阅读 · 0 评论 -
读书笔记:C++ primer 5th edition--chapter10.泛型算法
part1.概述 1.泛型算法不直接操作容器,而是遍历两个迭代器制定的一个元素范围。 2.迭代器令算法不依赖与容器,但是算法依赖于元素类型的操作。 3.算法不会改变底层容器的大小 part2.初识 1.只读算法。 int sum = accumulate(vec.cbegin(), vec.cend(), 0 ); string sum = accumulate(vec.cb原创 2016-10-09 00:10:07 · 381 阅读 · 0 评论 -
读书笔记:C++ primer 5th edition--chapter7.类
part1.基本用法 1.const 成员函数示例代码 string Sales_data::isbn (const Sales_data *const this){ return this->isbn;} 2.成员函数返回值 当我们定义的函数类似于内置运算符时,应该令该函数的行为尽量模仿这个运算符。内置运算符把它的左侧运算对象当成左值返回。因此成员函数也应返回:return *this;原创 2016-10-07 00:04:13 · 468 阅读 · 0 评论