C++基础知识4

1、普通函数和成员函数的区别?
a、普通函数是在类的外部定义的,成员函数是在类的内部定义的;
b、普通函数不能访问类的私有和保护成员变量,而成员函数可以访问类的所有成员变量,包括私有和保护成员;
c、普通函数可以直接调用,成员函数需要通过类的对象调用;
d、成员函数有一个特殊的指针this,它指向调用该成员函数的对象,普通函数没有这个指针。
2、this指针是干嘛的?
this指针是指向当前对象的地址。this指针主要用于在类的成员函数中访问当前对象的成员变量和成员函数。
this指针只能在非静态成员函数中使用,静态成员函数不属于人喝对象,没有this指针。
3、vector的扩容?
在插入新元素时如果内存不足则需要扩容,在VS下是扩容1.5倍,在GCC下是2倍。
4、vector的resize()和reverse()?
resize()不会改变vector的大小。resize(n)如果n大于vector的size,新元素会被添加到vector的末尾,如果n小于size,则末尾的元素会被删除,改变的是vector的size;
reserve(),改变的是vector的capacity,不改变vector的大小,只是预先分配主够的内存,主要是为了内存优化,避免添加元素时导致的进行频繁的内存分配。
5、vector中的push_back()和emplace_back()的区别?
push_back()向容器中添加元素时,首先会创建一个对象,然后将这个元素拷贝到容器中,然后再销毁之前创建的对象;
emplace_back(),则是直接在容器的尾部创建一个对象,省略了拷贝对象的过程。
6、哈希的时间复杂度为什么是O(1)?
它使用了一种叫做哈希函数的方法来直接计算出数据应该存储在那个位置,而不需要逐个检查每个位置。
7、哈希冲突怎么办?
通过链表或开放寻址的方式来解决,STL采用了链表法来解决哈希冲突。

你可能感兴趣的:(c++,开发语言)