189 8069 5689

八、C++STL 6大组件-你必知必会的编程利器

STL这部分推荐直接看《C++ primer》的9到11章内容,有非常详细的接口列表,还有很多例子。附录里还有常用的泛型算法,适合经常看一下

在南州晴隆等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供做网站、网站设计 网站设计制作定制开发,公司网站建设,企业网站建设,品牌网站设计,网络营销推广,成都外贸网站建设公司,南州晴隆网站建设费用合理。

vector容器

底层数据结构:动态开辟的数组,每次以原来空间大小的2倍进行扩容的

vector vec;

deque双端队列和list链表

初始的元素放在队列的中间,方便后续添加元素。外部有一个mapper保存队列,队满的时候会对mapper扩容,队列放在扩容后的mapper的sizeof(原来mapper)/2的位置。

deque容器:

list容器

vector、deque、list对比

vecotr和deque之间的区别?

  • deque底层内存是否是连续的? 不是。deque是由一个二维数组构成的。每一个第二维是连续的,第一维数据不是连续的。
  • 前中后插入删除的时间复杂度:中间和末尾是O(1),前面插入deque是O(1),vector是O(n)
  • 对于内存的使用效率: vector的低,需要的内存空间必须是连续的。deque可以分块进行存储,不需要内存空间必须是连续的。
  • 由于deque的第二维内存空间不是连续的,所以在deuqe中间进行元素的insert或者erase,造成元素移动的时候臂vector要慢

vector和list之间的区别?

  • list底层是双向循环链表
  • list的增加删除是O(1),vector增加删除是O(n)

详解容器适配器

无序关联容器

unordered_set:

unordered_map:

map的operator[]重载有两个功能:一是查询,二如果key不存在,会插入一对数据

unordered_map mp1;
mp1.insert(make_pair(12,"asf"));//生成pair类型
mp1.insert({123,"asfsaf"});

有序关联容器

底层是红黑树结构。

自定义类型如何在有序容器中排序:要在自定义类型中提供小于运算符的重载

容器的迭代器

函数对象

函数对象就是C语言里的函数指针

把有operator()小括号运算符重载函数的对象,称作函数对象或者称作仿函数。

好处:

  • 通过函数对象调用operator(),可以省略函数的调用开销,比通过函数指针调用函数(不能够inline内联调用)效率高。
  • 因为函数对象使用类生成的,所以可以添加相关的成员变量,用来记录函数对象使用时的更多的信息。
template
bool mygreater(T a, T b) {
    return a > b;
}

template
bool myless(T a, T b) {
    return a < b;
}

template
class Myless{//函数对象
public:
    bool operator()(T a,T b){
        return a
bool compare(T a, T b, Compare comp) {//使用函数指针或者函数对象调用前面定义的两个函数
    return comp(a, b);//在使用函数指针的时候无法声明为inline函数,效率低
}

int main() {
    cout << compare(10, 30, mygreater)<())<

函数对象的一些其他用法:用于priority_queue和set:

priority_queue,Mygreater> queue1;
priority_queue queue2;

for(int i=0;i<20;i++){
    queue1.push(rand()%100);
    queue2.push(rand()%100);
}

for(int i=0;i<20;i++){
    cout< set1;
set> set2;

for(int i=0;i<20;i++){
   set1.insert(rand()%100);
   set2.insert(rand()%100);
}

for(int a:set1){
    cout<

泛型算法和绑定器


分享题目: 八、C++STL 6大组件-你必知必会的编程利器
分享链接:http://cdxtjz.cn/article/dsoipse.html

联系我们

您好HELLO!
感谢您来到成都网站建设公司,若您有合作意向,请您为我们留言或使用以下方式联系我们, 我们将尽快给你回复,并为您提供真诚的设计服务,谢谢。
  • 电话:028- 86922220 18980695689
  • 商务合作邮箱:631063699@qq.com
  • 合作QQ: 532337155
  • 成都网站设计地址:成都市青羊区锣锅巷31号五金站写字楼6楼

小谭建站工作室

成都小谭网站建设公司拥有多年以上互联网从业经验的团队,始终保持务实的风格,以"帮助客户成功"为已任,专注于提供对客户有价值的服务。 我们已为众企业及上市公司提供专业的网站建设服务。我们不只是一家网站建设的网络公司;我们对营销、技术、管理都有自己独特见解,小谭建站采取“创意+综合+营销”一体化的方式为您提供更专业的服务!

小谭观点

相对传统的成都网站建设公司而言,小谭是互联网中的网站品牌策划,我们精于企业品牌与互联网相结合的整体战略服务。
我们始终认为,网站必须注入企业基因,真正使网站成为企业vi的一部分,让整个网站品牌策划体系变的深入而持久。