自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 1.6.4 函数对象

//泛型findMax,带有一个函数对象,Version //前提:a.size()>0 template <typename Object,typename Comparator> const Object & findMax(const vector<Object> & arr, Comparator cmp) { int maxIndex = 0; for(int i=1;i<arr.size();++i) i.

2022-01-03 15:56:23 366

原创 1.6.2 类模板

/** *一个模拟内存单元的类 */ template <typename Object> class MemoryCell { public: explicit MemoryCell(const Object & initialValue = Object{}) : storedValue{initialValue}{} const Object & read() const { return storedValue;} .

2022-01-03 11:43:18 312

原创 1.6.1 C++笔记:函数模板

类型无关:算法的逻辑不依赖存储在数组中的项的类型。 一个函数模板不是一个具体的函数,而是可以变成一个函数的型式 /** *返回数组a中的最大项 *假设a.size()>0. *可比较的对象必须提供operator<和operator= */ template<typename Comparable> const Comparable & findMax(const vector<Comparable> & a) { int maxIndax

2022-01-02 21:33:22 309

原创 两数相加(C++)

/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next...

2021-12-15 15:30:10 790

原创 1.5 C++细节五大函数:析构函数,拷贝构造,移动构造,拷贝赋值,移动赋值

在c++11中,类是和5个特殊的函数紧密相关的,它们是析构函数、拷贝构造函数、移动构造函数、拷贝赋值运算符和移动赋值运算符。 析构函数 只要一个对象运行越出范围,或经受一次delete,则析构函数就要被调用。典型情况下,析构函数的唯一责任就是释放掉在对象使用期间获得的资源,包括关于任意的new操作调用对应的delete,关闭任何打开的文件,等等。默认做法是对每个数据成员应用析构函数。 拷贝构造函数和移动构造函数 有两个特殊的构造函数用来构造一个新的对象,它被初始化为与另一个同样类型对象相同的状态。如

2021-11-12 19:25:36 973

原创 1.5 C++细节:返回值传递

在C++中,所使用的最直接的机制是传值返回。 double average(double a,double b); //返回a和b的平均值 LargeType randomItem(const vector<LargeType> & arr); //返回右值arr中的随机项 vector<int> partialSum(const vector<int> & arr); //在c++11中高效 首先考

2021-11-11 16:45:43 452

原创 1.5 C++细节:参数传递

考虑下面三个函数声明 double average( double a,double b); //返回a和b的平均值 void swap(double a ,double b); //返回a和b;参数类型错误 string randomItem( vector<string> arr); //返回arr中的一个随机项 传值调用保证,无论函数swap如何实现,x和y都将保持不变。现在我们需要的是声明a和b为引用型参数: void swap(d

2021-11-11 15:05:46 561

原创 1.5 C++细节: 左值、右值和引用

一个左值是一个标识非临时性对象的表达式。一个右值是一个标识临时性对象的表达式,或者是一个不与任何对象相联系的值。 vector<string> arr(3); const int x = 2; int y; ... int z=x+y; string str="foo"; vector<string> *ptr=&arr; 左值引用的声明是通过在某个类型后放置一个符号&来进行的。此时,一个左值引用成为了它所引用的对象的同义词。例如 string str =

2021-11-10 19:54:16 436

原创 1.5 C++细节:指针(pointer)

指针变量是一种存放另一对象所占用的地址的变量。 int main() { IntCell *m; m = new IntCell{0}; m->write(5); cout<<"Cell contents:"<<m->read()<<endl; delete m; return 0; } 声明 第三行是关于m的声明。星号*表明m是一个指针变量,允许指向一个IntCell对象。m的值是它所指向的

2021-11-10 17:04:34 253

原创 1.4 C++类: vector类和string类

#include <iostream> #include <vector> using namespace std; int main() { vector<int> squares(100); for(int i=0;i<suares.size();++i) squares[i]=i*i; for(int i=0;i<suares.size();i++) cout<<i<&lt.

2021-11-07 12:16:57 224

原创 1.4 C++类:接口与实现的分离

图一展示了IntCell类的接口,图二提供了类接口的实现,图三则给出一个用到IntCell的main例程。 #ifndef IntCell_H #define IntCell_H /** * 一个模拟整数单元的类 */ class IntCell { public: explicit IntCell(int initialValue=0); int read() const; void write(int x); private: int...

2021-11-06 21:19:15 322

原创 1.4 C++类:构造函数的附加语法和访问函数

/** * 一个模拟整数内存单元的类 */ class IntCell { public: explicit IntCell(int initialValue = 0) : storedValue{initialValue} {} int read() const {return storedValue;} void write(int x) {storedValue = x;} private: int storedVal.

2021-11-05 13:41:10 101

原创 C++类:基本的C++语法(笔记)

参考书籍:数据结构与算法分析——C++语言描述

2021-11-05 13:01:06 184

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除