合集-C++
摘要:const 用于声明该变量是一个常量。 可以用来声明成员函数,表示该函数不会改变成员变量。 const修饰指针的场景稍微复杂点,可以通过循环的方式记忆: constexpr constexpr 它是在 C++ 11 被引进的,它的字面意思是 constant expression,常量表达式。它可以
阅读全文
摘要:1、定义 template< class T, class Allocator = std::allocator<T> > class vector; vector是连续存储的,而且存储是自动管理的,按需扩张。vector 通常占用多于静态数组的空间,因为要分配更多内存以管理将来的增长。 vecto
阅读全文
摘要:1、在栈中创建对象 栈中创建的对象,不用我们手动释放资源。 和创建基本类型一样,直接声明即可,如果有参数,则用括号。 vector<int> a; // 默认构造函数 vector<int> b(实参); // 其他构造函数 2、在堆中创建对象 堆中创建的对象,需要我们手动释放资源。 使用new关键
阅读全文
摘要:1、引用全局变量、函数 int i = 0; void test() { int i = 3; cout<<i; //输出函数中的局部变量i cout<<::i; //输出全局变量i } 2、指定某个范围的成员 class A { public: int bbb(); //可以在类里面定义bbb,当
阅读全文
摘要:1、定义 template< class Key, class T, class Compare = std::less<Key>, class Allocator = std::allocator<std::pair<const Key, T>> > class map; namespace pm
阅读全文
摘要:1、定义 2、成员函数 类的成员函数是指那些把定义和原型写在类定义内部的函数,就像类定义中的其他变量一样。类成员函数是类的一个成员,它可以操作类的任意对象,可以访问对象中的所有成员。 成员函数可以定义在类定义内部,或者单独使用范围解析运算符 :: 来定义。在类定义中定义的成员函数把函数声明为内联的,
阅读全文
摘要:NULL在C语言中是(void * )0,在C++中却是0。这是因为在C++中void * 类型是不允许隐式转换成其他指针类型的,所以之前C++中用0来代表空指针。但是,在重载整型和指针的情况下,会出现匹配错误的情况。所以,C++11加入了nullptr,可以保证在任何情况下都代表空指针。
阅读全文
摘要:1、头文件 #include <cmath> 2、幂函数
阅读全文
摘要:1、申请内存 在C++中,结构体不仅可以使用malloc关键字申请内存,也可以使用new关键字申请内存。 struct_a *a = (struct_a *)malloc(sizeof(struct_a)); struct_a *a = new struct_a();
阅读全文
摘要:1、容量 1.1 size/length 2、元素访问 1.2 operator[]
阅读全文
摘要:1、定义 2、成员函数 2.1 容量 2.1.1 size 2.2 查找 2.2.1 count 2.2.2 find 2.3 修改器 2.3.1 insert 2.3.2 erase
阅读全文
摘要:
阅读全文
摘要:头文件: #include <algorithm> 1、最大最小操作 1.1 min 1.2 max
阅读全文
摘要:在C/C++中,变量、函数和类都是大量存在的,这些变量、函数和类的名称都将作用于全局作用域中,可能会导致很多命名冲突。 使用命名空间的目的就是对标识符和名称进行本地化,以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。 1、命名空间的定义 定义命名空间,需要使用到 name
阅读全文
摘要:1、概念 缺省参数是指在声明或定义函数时,为函数的参数指定一个默认值。在调用该函数时,如果没有指定实参则采用该默认值,否则使用指定的实参。 2、缺省参数分类 2.1 全缺省参数 全缺省参数,即函数的全部形参都设置为缺省参数。 void Print(int a = 10, int b = 20, in
阅读全文
摘要:1、概念 函数重载是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列表必须不同。函数重载常用来处理实现功能类似,而数据类型不同的问题。 #include <iostream> using namespace std; int Add(int x, int
阅读全文
摘要:1、概念 引用不是定义一个变量,而是已存在的变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。 其使用的基本形式为:类型& 引用变量名(对象名) = 引用实体。 注:引用类型必须和引用实体是同种类型。 2、引用特性 引用在定义时必须初始化 一个变量可以有多个引用
阅读全文
摘要:1、概念 auto不再是一个存储类型指示符,而是作为一个新的类型指示符来指示编译器,auto声明的变量必须由编译器在编译时期推导而得。 注意:使用auto变量时必须对其进行初始化,在编译阶段编译器需要根据初始化表达式来推导auto的实际类型。因此,auto并非是一种“类型”的声明,而是一个类型声明的
阅读全文
摘要:for循环后的括号由冒号分为两部分:第一部分是范围内用于迭代的变量,第二部分则表示被迭代的范围。 int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; //将数组元素值全部乘以2 for (auto& e : arr) { e *= 2; } //打印数组中的
阅读全文
摘要:bss 段:存放未初始化的全局变量(包括静态全局变量)和初始化为0的全局变量(包括静态全局变量),属于静态分配内存(bss = Block Started by Symbol) data 段:数据段,用来存放已经初始化且初始化值为非零的全局变量(包括静态变量) text 段:通常是指用来存放程序执行
阅读全文
摘要:1、简单定义 左值 (lvalue, locator value) 表示了一个占据内存中某个可识别的位置(也就是一个地址)的对象。 右值是一个不表示内存中某个可识别位置的对象的表达式。 每个类型都有三个对应的 CV-限定类型版本: const 限定 、 volatile 限定 和 const-vol
阅读全文
摘要:1、介绍 C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的,跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式). 2、隐式转换 在C++中, 如果的构造函数只有一个参数
阅读全文
摘要:1、默认构造函数 形式:没有入参 调用方式:直接定义 声明: Constructor(); 调用: Constructor c; 2、初始化构造函数 形式:有参数列表 调用方式:传参即可 声明: Constructor(int a, int b); 调用: Constructor c(1,2); 3
阅读全文
摘要:1、简介 我们之前使用的typeid运算符来查询一个变量的类型,这种类型查询在运行时进行。RTTI机制为每一个类型产生一个type_info类型的数据,而typeid查询返回的变量相应type_info数据,通过name成员函数返回类型的名称。同时在C++11中typeid还提供了hash_code
阅读全文
摘要:template <typename T> class remove_reference { public: typedef T type; }; template<typename T> class remove_reference<T&> { public: typedef T type; };
阅读全文
摘要:1、简介 注意:typeid是操作符,不是函数。这点与sizeof类似) 运行时获知变量类型名称,可以使用 typeid(变量).name() 需要注意不是所有编译器都输出”int”、”float”等之类的名称,对于这类的编译器可以这样使用。 int ia = 3; if(typeid(ia) ==
阅读全文
摘要:对C++中 using关键字的几种用法的总结: 1、using 声明 using 声明 (using declaration) 是将命名空间中单个名字注入到当前作用域的机制,使得在当前作用域下访问另一个作用域下的成员时无需使用限定符 :: // ... { using std::map map<in
阅读全文
摘要:1、三者关系 因为【引用折叠】特性,才有了万能引用。 2.【完美转发】的特性是借助【万能引用】以及【forward模板函数】来实现。 2、引用折叠 规则一: 当我们将一个左值传给模板函数的右值引用参数(T&&)时, 编译器推断模板类型参数T为的左值引用类型,例如对于int类型时,推断T为int&.
阅读全文

浙公网安备 33010602011771号