C++11
自己总结笔记
Koganlee
个人公众号:高数之父带你学编程。
高数之父只是考研数学的一个梗。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++ lambda表达式
lambda表达式实际上是对函数对象的一种强化和拓展,可以直接定义匿名的函数对象。[] (params) {}[]为引出操作符(lambda introducer)(params) {}为lambda表达式lambda表达式的类型成为“闭包”(closure type)。闭包:能够读取其他函数内部变量的函数。auto f1 = [](int x) { return x * x;};auto f2 = [](string){ cout <&l..原创 2020-09-07 07:06:14 · 172 阅读 · 0 评论 -
C++11(六) 条件变量(condition_variable)
前面提到了线程,那么肯定就要说到条件变量。条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待条件变量的条件成立而挂起;另一个线程使条件成立(给出条件成立信号)。为了防止竞争,条件变量的使用总是和一个互斥量结合在一起。头文件<condition_variable> condition_variable condition_variable_any 相同点:两者都能与std::mutex一起使用。不同点:前者仅限于与 std原创 2020-09-06 22:08:27 · 493 阅读 · 0 评论 -
C++11(三)
自动类型推导。C++是一种强类型的静态语言,任何变量、表达式都要有明确的类型。例如:long x = 0L;对于简单的变量,还是很容易写出它的类型,但是比如说类、命名总奖金、模板等类型变量,缺很难写出该变量的类型。auto:推导某个变量在赋值语句中的类型。auto x = 0L;auto只能用于赋值语句中类型的推导。 atuo总是能推断出值的类型。 aotu允许使用const /volatile/&/*等修饰,从而等到新的类型。 auto&&总是推.原创 2020-08-30 01:42:11 · 188 阅读 · 0 评论 -
C++11(五) thread
C++11标准中添加了线程以及对对线程相关的类。线程在头文件<thread>中定义。线程的构造函数:std::thread::threadthread(); //只是创建了一个新的线程对象而并不能代表线程。thread( thread&& other ); //移动构造函数,可以接受从另外一个线程那转移过来的线程。 template< class Function, class... Args >explicit thread( Funct原创 2020-08-20 07:49:22 · 411 阅读 · 0 评论 -
C++11(四)bind function mem_fn
function 相当于一个函数对象的容器,该容器可以容纳函数、lambda表达式、bind()和函数对象。template< class R, class... Args >class function<R(Args...)>;//其中R代表result_type,即返回类型。容器容纳函数函数的返回值。//Args代表容器容纳函数函数传入的参数。//class... Args代表可变参数,意思就是支持多个参数。 bind 函数适配器,可以适配任意可调用对象..原创 2020-08-03 01:05:25 · 698 阅读 · 1 评论 -
如何使用C++11标准语法的语句写出指向类的成员的指针
C++11语法中的:mem_fn。 先上定义:template< class R, class T >/*unspecified*/ mem_fn(R T::* pm);//R代表result_type,即返回类型。 //T代表传入的class或struct。//pm - pointer to member that will be wrapped.该函数可以传入struct或class。然后返回一个指向传入object的函数容器。该容器可以指向struct或class的成员变原创 2020-08-02 11:52:28 · 202 阅读 · 0 评论 -
C++11/14标准(二)智能指针
先说一句为什么要用智能指针。智能指针是为了解决内存泄露的问题。C/C++程序员可以自己开辟堆(heap)上的内存空间,同时也需要自己释放堆上的内存空间。一旦忘记释放内存空间,这样会造成内存泄露。 不得不提及一下RAII机制(资源获取即初始化,Resource Acquisition Is Initialization)。在类的构造函数里面申请资源,然后使用,最后在析构函数中释放资源。所以这也就为什么析构函数需要用virtual来修饰来避免出现内存泄露。计算机有栈和堆两种。这...原创 2020-06-22 21:39:32 · 510 阅读 · 0 评论 -
C++11/14标准(一)左值与右值
切记所有代码需要在C++11标准下运行,如果使用g++,请添加-std=c++11。 左值和右值 左值是一个用来存储数据的变量,有自己的内存空间,表达式结束后仍然存在。右值是一个临时变量,它在表达式结束时生命周期终止。通俗的说法就是能使用取地址符的值就是左值,不能使用取地址符的值就是右值。左值可以是函数或者对象。/// /// @file lvalue.cpp /// @author kogan(709954896@qq.com) /// @date ...原创 2020-06-20 15:52:56 · 425 阅读 · 0 评论
分享