
C++11标准库
工农村贴膜小哥
最喜欢贴膜了
展开
-
新特性(1)---nullptr,auto
引入nullptr的原因c中的null在c语言中,我们常常会使用null;代表一个空指针,表示指针不指向任何对象。NULL是一个宏定义,定义如下:#define NULL ((void *)0)在使用中通过隐式转换,将空指针转换为其他类型的指针。如下将void *转换为int *在c中,也支持将null定义为整型0int *p=NULL;c++中的null在c++中,不允许指针...原创 2018-10-14 18:07:41 · 219 阅读 · 0 评论 -
迭代器之适配器
任何东西,只要其行为类似迭代器,它就是一个迭代器,标准库提供了数个预定义的特殊迭代器,也叫做迭代器适配器。使用前需要加上 #include<iterator>1,Insert iterator安插型迭代器2,Stream iterator串流迭代器3,Reverse itreator逆向迭代器4,Move iterator搬移迭代器1,Insert iterator安插型迭...原创 2019-05-26 17:06:29 · 194 阅读 · 0 评论 -
STL容器
总体按照不同的需要,容器可以分为三类:序列式容器,关联式容器,无序容器序列式容器vector和deque虽然可以随机访问,但不能通过[ ]进行赋值,list无法使用[ ],只能通过front()或者迭代器访问元素。list和deque都可以双向访问,故多了push_front()#include<vector>#include<deque>#include&...原创 2019-05-25 16:32:24 · 238 阅读 · 0 评论 -
通用工具(3)--辅助函数
挑选最大值和最小值使用通用工具时候需要添加,用来在两值或者多个值中选择最大值和最小值。举例: std::min();判断最小值min(a,b) //返回a和b的最小值min(a,b,cmp)//通过cmp比较a与bmin(intlist)//返回初值列的最小值min(intlist,cmp)//通过cmp比较初值列其中cmp是一个函数或者函数对象,但是必须是bool cmp(T x...原创 2018-12-02 22:54:20 · 321 阅读 · 0 评论 -
通用工具(2)---Tuple
Tuple作为pair的扩展,可以拥有任意数量的元素tuple的操作tuple也是能默认构造,拷贝构造,赋值,比较等,他们都支持隐式转换,使用make_tuple,其所有元素类型都是通过自动推导获得类型。使用get时候不允许运行期才传入索引值。tuple<int,string,double> p(15,"test",15.0);auto p2=make_tuple(15,"te...原创 2018-11-04 22:19:05 · 230 阅读 · 0 评论 -
通用工具(1)---Pair
Class Pair (本质是个结构体)可以将两个元素视为一个单元,在c++中经常能看见它的身影比如,map,multimap等等都是使用pair。任何的函数想返回一组数据也需要用到pair。pair的构造和使用 pair<double, int > p;//使用默认的方式构造 //即double()和int()来构造两个值,输出 0,0 pair<int ...原创 2018-11-03 22:42:10 · 218 阅读 · 0 评论 -
lambda浅析
所谓的lambda就是一份功能定义式,可以被定义于语句或者表达式内部。因此你可以把lambda表达式当做内联函数来使用也可以叫做匿名函数。用法可以直接调用他: [] { cout << "hello" << endl; }();也可以把他传递给其他对象,使之能够调用,也可以传递参数和返回值。甚至可以在括号后面指定返回值的类型 auto t=[] (con...原创 2018-10-30 22:24:40 · 233 阅读 · 0 评论 -
新特性(3)---move语义
move语义左值和右值在说move语义之前,不得不说的是左值和右值。通俗简单点的讲左值和右值通过是否在内存中有空间来分类。左值是在内存空间实体如(变量和函数等),而相反的没有空间的为右值如临时对象。 int a=1;//a为左值,1为右值 int *p = &a;//p为左值 int f = test();//test()返回一个临时对象,为右值再比如这样,test()返回...原创 2018-10-27 23:34:39 · 800 阅读 · 1 评论 -
新特性(4)---Foreach,String Literal
Foreachforeach是新引入的一种for循环形式,常见语法如下:decl是coll集合中每个元素的声明for(decl: coll){ //run}for的转换对于集合种提供成员函数如begin(),或者end()等产生的foreach如下template <typename T>void printf_elem(const std::initiali...原创 2018-10-29 22:54:06 · 248 阅读 · 0 评论 -
新特性(2)---一致性初始化,用户自定义初值列
一致性初始化引入原因在没有引入之前,变量的初始化有许多方式 (如小括号,大括号,赋值号),且不同变量和类又有不同的初始化方式。(如,结构体能用{}初始化,类用{}则会出错。) int i=1; int i(1); int i = int(1); testStruct struct={"test",10}; testClass class=("test",10);...原创 2018-10-21 22:08:56 · 281 阅读 · 0 评论 -
STL算法
rangge(区间)所有的算法都是用来处理一个或者多个区间内的元素,为了操作元素的某个子集,我们必须将区间首尾按照两个实参传给算法,我不是一口气将整个容器传递过去。我们必须保证两个迭代器必须属于同一个容器,且前后放置正确,否则后果难料。stl的区间都是半开区间,也就是包括前面的迭代器而不包括后面的迭代器。按照算法的参数,划分为:1 function(sou-range)算法的参数中只有源区...原创 2019-05-26 22:02:22 · 197 阅读 · 0 评论