1、map&set容器的实现原理?

set称作集合,只存储key;
map映射表,存储[key,value]键值对,
它们的底层数据结构都是红黑树,都是通过key进行元素比较

2、shared_ptr引用计数存在哪里?

堆上分配的

3、STL、map底层、deque底层、vector里的empty()和size()的区别、函数对象?

        STL标准容器 ->顺序容器(vector,deque,list),容器适配器(stack,queue,priority_queue),关联容器(有序(set和map)和无序(底层是链式哈希表))
        还有近容器 数组,string,bitset 迭代器 泛型算法
map底层是红黑树
deque底层是动态开辟的二维数组
deque的实现有这2个宏 ,一维默认size是2

比如说用整型实例化deque,二维大小就是1024
deque底层内存不是连续的,正在开辟的二维数组

 vector里的empty()和size()

 

        用last-first,firs指向的是vector底层内存的起始地址,last指向的是最后一个有效元素的后继位置,end指向的是内存的末尾地址,

        函数对象(拥有()运算符重载函数) 使用在泛型算法当中
operator() test(); test.operator()(); sort find_if priority_queue set map

Logo

2万人民币佣金等你来拿,中德社区发起者X.Lab,联合德国优秀企业对接开发项目,领取项目得佣金!!!

更多推荐