C++知识点点点点点(2)

本文详细介绍了C++11的一些重要特性,包括:noexcept关键字用于指定函数不会抛出异常;右值引用用于优化资源移动;默认与删除操作符简化了类的定义;chrono库提供了高效的时间处理;size_t用于表示最大数组尺寸;运算符重载增加灵活性;this指针在成员函数中的作用;const成员函数与const对象的使用;移动构造函数提高资源利用效率;vector和list两种不同特性的容器;迭代器作为STL通用工具;以及RAII原则在C++中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • noexcept关键字

C++11引入,替代之前的throw;两个作用:指出函数不会发生异常;用作运算符,判断操作数(表达式)是否可能引发异常。

 

  • 右值引用(&&)

C++11引入,如果能够对表达式取地址,则为左值;不能取,则为右值。

int& A=a;//左值引用,正确
int& A=1;//错误。1为右值
int&& A=1;//正确,右值引用

参考:https://www.jianshu.com/p/d19fc8447eaa

 

  • =default和=delete

C++11引入,以构造函数为例:

copy()=default;//使用默认的构造函数
copy()=delete;//删除构造函数,不使用构造函数

 

  • chrono

C++11引入的时间处理库,包括:system_clock;steady_clock;high_resolution_clock。high_resolution_clock为例:

std::chrono::high_resolution_clock::time_point start = std::chrono::high_resolution_clock::now();

/*监测执行时间的程序段*/

std::chrono::high_resolution_clock::time_point end = std::chrono::high_resolution_clock::now();

std::chrono::duration<double, std::milli> fp_ms = end - start;//计算用时

参考:https://www.cnblogs.com/zlshmily/p/10058427.html

 

  • size_t

目标平台下最大可能的数组尺寸。例如:X64下,int数组为4字节,size_t为8字节。

 

  • 运算符重载

运算符重载:返回值类型  operator  重载运算符  (参数列表);包括成员函数形式和非成员函数形式。

非成员函数形式如下:

成员函数如下(省去左操作值,通过this指针实现):

 *参考:https://www.runoob.com/cplusplus/cpp-overloading.html

 

  • this指针

this指针是类中所有成员函数的隐形参数,每一个对象都能通过this指针访问自己的地址。this指针只能用于成员函数,不能用于全局函数、静态成员函数、友元函数(友元函数不是类的成员)。

return* this:在类的非静态成员函数中返回类对象本身。

*参考:https://www.cnblogs.com/yuwanxian/p/10988736.html

 

  • const函数

const成员函数可以访问类内的const变量和普通成员变量,但是不能够进行变量的修改。

const对象只能访问const变量、const成员函数;避免其他函数对const对象进行修改。

参考:https://www.cnblogs.com/curo0119/p/8534299.html

 

  • 移动构造

C++11引入,通过右值引用实现移动构造,达到对资源的有效利用。

*参考:https://www.cnblogs.com/zl1991/p/8480803.html

 

  • vector和list

vector类似数组,占用连续的内存块,便于随机读取,不便于插入删除;

list利用双向链表实现,非连续内存,便于插入删除,不便于随机读取。

 

  • 迭代器--iterator

迭代器类似指针,STL的一种通用方法。模板使得算法独立于存储的数据类型,而迭代器使算法独立于使用的容器类型。以vector为例:

vector<double> scores;
vector<double>::iterator pd=scores.begin();
//auto pd=scores.begin();
*pd=22.3;
++pd;

 

  • STL容器的一些方法

STL提供了一组表示容器、迭代器、函数对象和算法的模板。

size();返回容器中的元素数目;
swap();交换两个容器中的内容;
begin();返回一个指向容器中第一个元素的迭代器;
end();返回一个表示超过容器尾的迭代器/最后一个元素的下一个;

erase(scores.begin(),scores.begin()+2);删除容器中的元素。接受两个迭代器参数,第一个迭代器指向区间的起始处,第二个指向区间终止处的后一个位置。例:删除第一个和第二个元素。

insert(old_v.begin(),new_v.begin(),new_v.end());向容器中插入元素;接受三个迭代器参数,第一个指定插入位置,二三指定插入区间。

sort();对容器进行大小值排序。接受指向容器的第一个与元素的迭代器和指向超尾的迭代器作为参数。

 

  • RAII

RAII:Resource Acquisition is Initialization,资源获取即初始化。C++中用于资源管理的一种有效方法。举例如下:

构造与析构函数:创建一个对象的时候,自动调用构造函数,当对象超出作用域自动调用析构函数,将资源和对象的声明周期绑定。

智能指针:实现自动的内存管理,不需要手动delete。

lock_guard():mutex的一种管理方法,不需要手动unlock。

参考:https://www.cnblogs.com/jiangbin/p/6986511.html

 

  • mutex

*参考:https://www.jianshu.com/p/4a44f1e46e48

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值