牛客 C++刷题day48&49

1.vector:随机访问迭代器,复杂度O(1)
deque:同上,O(1)
map:双向迭代器,不过由于是关联容器,需要通过key访问alue的方法,O(h),h为树的高度
unordered_map:前向迭代器,同上,平摊复杂度O(1),最差O(n),也与散列函数的好坏有关。
string:同vector

split是对字符串的分割,而例如10.42这样的数字,编译器自动类型推断中应该是double类型

2.malloc申请内存空间失败的时候,人家返回的值为NULL,而不是任意的。

3.java 和 C++ 的区别

 

 4.

运算符重载时要遵循以下规则:

(1) 除了类属关系运算符"."、成员指针运算符".*"、作用域运算符"::"、sizeof运算符和三目运算符"?:"以外,C++中的所有运算符都可以重载。

(2) 重载运算符限制在C++语言中已有的运算符范围内的允许重载的运算符之中,不能创建新的运算符。

(3) 运算符重载实质上是函数重载,因此编译程序对运算符重载的选择,遵循函数重载的选择原则。

(4) 重载之后的运算符不能改变运算符的优先级和结合性,也不能改变运算符操作数的个数及语法结构。

(5) 运算符重载不能改变该运算符用于内部类型对象的含义。它只能和用户自定义类型的对象一起使用,或者用于用户自定义类型的对象和内部类型的对象混合使用时。

(6) 运算符重载是针对新类型数据的实际需要对原有运算符进行的适当的改造,重载的功能应当与原有功能相类似,避免没有目的地使用重载运算符。
5.MFC中CString是类型安全的类
6.作用域运算符的其他作用:
1.存在具有相同名称的局部变量时,访问全局变量;
2.在类之外定义类相关函数;
3.访问类的静态变量;
4.在多重继承的情况下,如果两个基类中存在相同的变量名,可以使用作用域运算符来进行区分。
 
7.
loat型数据通常用IEEE754单精度浮点数格式表示:(32位)
三部分组成:符号位、阶码、尾数;
1.符号位:第31位(0-31)正数--0        负数--1
2.阶码:第30位----第23位(共8位)
计算:将实数转化为二进制的指数表示形式,形如 a*2^n;a的取值范围应在在1~2之间,阶码 = n + 127,最后将其表示成二进制形式
3.尾数:第22位----第0位
上述参数a的小数部分为尾数部分
 
示例:
-8.25:
1.符号位 = 1;
2. (8.25)10 = (1000.01)2 = 1.000 01 * 2^3;        n = 3        阶码    =    3+127 = (130)10 = ( 100  0001  0)2
3.尾数 : 000 0100  0000 0000 0000 0000
最终结果 : 1100 0001 0000 0100 0000 0000 0000 0000
                    1        100 0001 0        000 0100 0000 0000 0000 0000
                符号位        阶码                                    尾数

 

posted @ 2019-10-21 19:33  Tonarinototoro  阅读(121)  评论(0)    收藏  举报