zoukankan      html  css  js  c++  java
  • STL

    博客园的一篇关于vector源码的文章,可以更加深入的理解一下vector:STL源码剖析---vector

    STL容器包括顺序式容器和关联式容器,主要介绍一下顺序式容器(vector、list、deque、queue、stack);

    vector:其实可以就简单地理解为一个动态数组,可以从末尾直接添加元素,能改变数组大小。(参考一下百度百科定义: vector )

    vector举例:

     

     1 vector<int>a;            // 默认初始化;
     2 vector<int>a(50);        // 数组a有50个为0的元素;
     3 vector<int>a(10,7);      // 10个为7的元素;
     4 vector<int>b(a);         // 用a定义b;
     5 
     6 struct Point {
     7     int x;
     8     int y;
     9 };
    10 vector<Point>a;          // 结构体类型数组

    主要函数:

     1 push_back();       // 在尾部添加元素;
     2 size();            // 元素个数;
     3 empty();           // 是否为空;
     4 insert();          // 插入;
     5 pop_back();        // 删除末尾元素;
     6 erase();           // 删除;
     7 clear();           // 清空;
     8 sort();            // 排序;
     9     sort(start, end, cmp)
    10     // start 排序数组的起始地址;
    11     // end 排序数组结束地址的下一位;
    12     // cmp 排序的方法,默认为升序;

     

    如果需要详细理解,完全是可以看上面链接的源代码,别人的文章也写得更好,可以详细琢磨,更好的体会vector;

    贴一以前写过的:用结构和STL常用算法实现对学生成绩的排序和查找(vector)

     

    list:list是双向循环链表,每一个元素都可以直接访问前面一个元素和后面一个元素。实际上list的使用和vector的使用方法差不多。list适用于插入和删除频繁,随机访问较少的情况,vector适用于插入和删除较少,随机访问多的情况。

    关于list的举例我还是老实的做一个传送门算了:https://blog.csdn.net/xiaoquantouer/article/details/70339869

    下次再写吧。

  • 相关阅读:
    c++ 容器学习 理论
    TCP和UDP发送数据包的大小问题
    key.go
    election.go
    watch.go
    txn.go
    sort.go
    retry.go
    op.go
    maintenance.go
  • 原文地址:https://www.cnblogs.com/2015-16/p/13234813.html
Copyright © 2011-2022 走看看