随笔分类 - c++
摘要:1、介绍 C++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含sstream.h头文件。 istringstream类用于执行C++风格的串流的输入操作。 ostringstream类用于执行C风格的串流的输出操作。 st
阅读全文
摘要:请问C++11有哪些新特性? C++11 最常用的新特性如下: auto关键字:编译器可以根据初始值自动推导出类型。但是不能用于函数传参以及数组类型的推导 nullptr关键字:nullptr是一种特殊类型的字面值,它可以被转换成任意其它的指针类型;而NULL一般被宏定义为0,在遇到重载时可能会出现
阅读全文
摘要:请你来说一下一个C++源文件从文本到可执行文件经历的过程? 对于C++源文件,从文本到执行文件一般需要四个过程: 预处理阶段:对源代码文件中文件包含关系(头文件)、预编译语句(宏定义)进行分析和替换,生成预编译文件; 编译阶段:将经过预处理后的预编译文件转换成特定汇编代码,生成汇编文件; 汇编阶段:
阅读全文
摘要:请你回答一下什么是右值引用,跟左值又有什么区别? 右值引用是C++11中引入的新特性 , 它实现了转移语义和精确传递。它的主要目的有两个方面: 1. 消除两个对象交互时不必要的对象拷贝,节省运算存储资源,提高效率。 2. 能够更简洁明确地定义泛型函数。 左值和右值的概念: 左值:能对表达式取地址、或
阅读全文
摘要:请你来说一下C++中类成员的访问权限 C++通过 public、protected、private 三个关键字来控制成员变量和成员函数的访问权限,它们分别表示公有的、受保护的、私有的,被称为成员访问限定符。在类的内部(定义类的代码内部),无论成员被声明为 public、protected 还是 pr
阅读全文
摘要:请你来说一下map和set有什么区别,分别又是怎么实现的? map和set都是C++的关联容器,其底层实现都是红黑树(RB-Tree)。由于 map 和set所开放的各种操作接口,RB-tree 也都提供了,所以几乎所有的 map 和set的操作行为,都只是转调 RB-tree 的操作行为。 map
阅读全文
摘要:1、STL概述 为了建立数据结构和算法的一套标准,并且降低他们之间的耦合关系,以提升各自的独立性、弹性、交互操作性(相互合作性,interoperability),诞生了STL。 STL提供了六大组件,彼此之间可以组合套用,这六大组件分别是:容器、算法、迭代器、仿函数、适配器(配接器)、空间配置器。
阅读全文
摘要:如果同时定义了两个函数,一个带const,一个不带,会有问题吗? 不会,这相当于函数的重载。 请你来说一说隐式类型转换 首先,对于内置类型,低精度的变量给高精度变量赋值会发生隐式类型转换,其次,对于只存在单个参数的构造函数的对象构造来说,函数调用可以直接使用该参数传入,编译器会自动调用其构造函数生成
阅读全文
摘要:请你回答一下为什么析构函数必须是虚函数?为什么C++默认的析构函数不是虚函数 考点:虚函数 析构函数 将可能会继承的父类的析构函数设置为虚函数,可以保证当我们new一个子类,然后使用基类指针指向该子类对象,释放基类指针时可以释放掉子类的空间,防止内存泄漏。 C++默认的析构函数不是虚函数,是因为虚函
阅读全文
摘要:说一下static关键字的作用 1. 全局静态变量 在全局变量前加上关键字static,全局变量就定义成一个全局静态变量。 内存中的位置:静态存储区(在整个程序运行期间一直存在)。 初始化:未经初始化的全局静态变量会被自动初始化为0(自动对象的值是任意的,除非他被显示初始化); 作用域:全局静态变量
阅读全文
摘要:编程范式 (Programming paradigm) 范,模范、典范也。范式即模式、方法。常见的编程范式有:函数式编程、程序编程、面向对象编程、指令式编程等。 在面向对象编程的世界,程序是一系列相互作用(方法)的对象(Class Instances),而在函数式编程的世界,程序会是一个无状态的函数
阅读全文
摘要:1. deque简介 deque(包含头文件#include<deque>)由若干段连续空间串接而成,一旦有必要在deque的头部或尾端增加新的空间,便配置一段定量连续的空间,串接在deque的头部或尾端。deque的最大任务,就是在这些分段连续的空间上维护其整体连续的假象,并提供随机存取的接口。
阅读全文
摘要:1.0 字符串复制 1.1 strcpy() 完全复制 原型:char* strcpy(char* dest, char* src);功能:把从src地址开始且含有 ‘\0’结束符的字符串复制到以dest开始的地址空间返回指向dest的指针说明: src 和 dest所指内存区域不可以重叠且dest
阅读全文
摘要:c++程序通常可以调用标准c++库中的大量函数。这些函数完成一些基本的服务,如输入和输出等,同时也为一些经常使用的操作提供了高效的实现代码。这些函数中含有大量的函数和类定义,以帮助程序员更好地使用标准c++库。 标准c++库的详细消息均在其对应的头文件进行了说明。主要标准c++库头文件如下所示。其中
阅读全文
摘要:写在前面 看到一些解决方法是:在tasks.json文件中,args下加入参数:“-std=c++11”但是并没有解决问题,还需进一步设置。 更进一步操作 说明:如果加入“-std=c++11”参数后未解决问题,继续接下来的操作 1.点击CodeRunner的小齿轮,点击configure exte
阅读全文
摘要:1. 基本性质 sort函数包含在头文件为#include<algorithm>的c++标准库中,调用标准库里的排序方法可以实现对数据的排序,但是sort函数是如何实现的,我们不用考虑! 2. sort函数参数 void sort (RandomAccessIterator first, Rando
阅读全文
摘要:1. 运算符重载 +、+= 连接字符串 = 字符串赋值 >、>=、<、<= 字符串比较(例如a < b, aa < ab) ==、!= 比较字符串 <<、>> 输出、输入字符串 注意:使用重载的运算符 + 时,必须保证前两个操作数至少有一个为 string 类型。例如,下面的写法是不合法的: 1 #
阅读全文
摘要:1. 调用格式 1 printf("<格式化字符串>",<参量表>); 其中格式化字符串包括两部分内容: 一部分是正常字符, 这些字符将按原样输出; 另一部分是格式化规定字符, 以"%"开始, 后跟一个或几个规定字符, 用来确定输出内容格式。参量表是需要输出的一系列参数, 其个数必须与格式化字符串所
阅读全文
摘要:1. 反三角函数 double asin (double); 结果介于[-PI/2,PI/2] double acos (double); 结果介于[0,PI] double atan (double); 反正切(主值), 结果介于[-PI/2,PI/2] double atan2 (double,
阅读全文
摘要:string 转 char* 1.调用 string 提供的函数 c_str() const char* p; strcpy(p,a.c_str()); // c_str() 返回一个以 '\0' 结尾的字符数组; 2.调用 string 提供的函数 data() string str = "abc
阅读全文