C++ map
C++ 中 map 提供的是一种键值对容器,里面的数据都是成对出现的。 每一对的第一个值称之为关键字key,每个关键字只能在map中出现一次; 第二个值称之为关键字的对应值。 基本概念 std::map 是关联式容器,存储键值对(key-value) 键唯一,自动排序 底层实现:红黑树(平衡二叉搜索树) 常见应用:字典、映射表、频率统计、索引查找 Map使用 ...
C++ 中 map 提供的是一种键值对容器,里面的数据都是成对出现的。 每一对的第一个值称之为关键字key,每个关键字只能在map中出现一次; 第二个值称之为关键字的对应值。 基本概念 std::map 是关联式容器,存储键值对(key-value) 键唯一,自动排序 底层实现:红黑树(平衡二叉搜索树) 常见应用:字典、映射表、频率统计、索引查找 Map使用 ...
C++ 不包含多线程应用程序的任何内置支持。相反,它完全依赖于操作系统来提供此功能。 假设您使用的是 Linux 操作系统,我们要使用 POSIX 编写多线程 C++ 程序。POSIX Threads 或 Pthreads 提供的 API 可在多种类 Unix POSIX 系统上可用,比如 FreeBSD、NetBSD、GNU/Linux、Mac OS X 和 Solaris。 下面的例...
以下的信号动作被定义在C++头文件<csignal>中 信号 描述 SIGABRT 程序的异常终止,如调用 abort。 SIGFPE 错误的算术运算,比如除以零或导致溢出的操作。 SIGILL ...
预处理器是一些指令,指示编译器在实际编译之前所需完成的预处理。 所有的预处理器指令都是以井号(#)开头,只有空格字符可以出现在预处理指令之前。预处理指令不是 C++ 语句,所以它们不会以分号(;)结尾。 define预处理 #define 预处理指令用于创建符号常量。该符号常量通常称为宏,指令的一般形式是: #define macro-name replacement-text ...
模板是泛型编程的基础,泛型编程是以一种独立于任何特定类型的方式编写代码。 使用模板可以下厨类型无关的代码,编译器会在使用时生成具体类型版本。 简单来说,模板就是在实例化函数或类的时候,把类型当作参数传进去或者编译一起自动推断类型,然后分别生成不同类型的函数或者类。 函数模板 模板函数定义的一般形式如下: template <typename type> ret-type...
命名空间主要解决不同库中,相同名称的命名冲突问题,它可作为附加信息来区分不同库中相同名称的函数、类、变量等。 定义命名空间 命名空间的定义使用关键字 namespace,后跟命名空间的名称,如下所示: namespace namespace_name { // 代码声明 } 为了调用带有命名空间的函数或变量,需要在前面加上命名空间的名称,如下所示: name::code; ...
C++程序中,内存分为: 栈:在函数内部声明的所有变量都将占用栈内存。 堆:程序中未使用的内存,在程序运行时可用于动态分配内存。 对于确定的变量,通常在栈上进行内存空间申请。 对于无法提前预知需要多少内存来存储某个定义变量的特定信息,所需内存的大小需要在运行时才能确定时,可以使用特殊的运算符为给定类型的变量在运行时分配堆内的内存。 申请动态内存时使用new,不需要动...
C++主要有以下三种异常处理的关键字 throw: 当问题出现时,程序通过throw抛出一个异常。 catch: 使用catch来捕获异常 try: try块中的代码标识将被激活的特定异常。它后面通常跟着一个或多个 catch 块。 基本语法 try { // 可能会出错的代码 if (条件不满足) { throw 错误对象; // ...
C++iostream标准库除了提供从标准输入读取流istream和向标准输出写入流ostream,还提供从文件读取流和向文件写入流fstream 要在 C++ 中进行文件处理,必须在 C++ 源代码文件中包含头文件 <iostream> 和 <fstream>。 数据类型 数据类型 描述 ...
数据封装(Encapsulation) 是 面向对象编程(OOP) 的三大特性之一。它的核心思想是 把数据和操作数据的函数绑定在一起,并通过访问权限来保护数据。 也就是说,对象的内部状态对外部隐藏,只能通过类提供的接口访问。 实现方式 数据封装主要依赖类和访问控制符 public: 对所有代码可见 protected: 对子类和本类可见 private: 仅对本类可见 ...