zoukankan      html  css  js  c++  java
  • STL的一些基本概念

    STL:Standard Template Libtary,标准模板库

    STL中的三大概念:算法(algorithm)、容器(container)、迭代器(iterator)

    容器主要包含有:

    1.标准STL序列容器:

    vector(可以存储基本数据类型,也可以存储类对象,相当于C++的数组)、

    string(字符串)、

    deque(双端队列)、

    list(双端链表);

    2.标准STL关联容器板:

    set和multiset(集合和多重集合,key值和value相等,即键和值相等,但set不允许集合中的key重复,multiset允许key重复。能按特定顺序将集合中的元素排序,默认是升序排列)、

     map和multimap(映射和多重映射,key值和value值不等,组成一个pair,但map不允许集合中的key重复,multimap允许key重复。能够快速检索和操作其中的元素);

    3.非标准序列容器slist和rope。slist是一个单向链表,rope本质上是一个重型字符串。(绳子(rope)是重型的“线(string));
    4.非标准关联容器hash_set、hash_multiset、hash_map和hash_multimap;
    5.几种标准非STL容器,包括数组、bitset、valarray、stack、queue和priority_queue。值得注意的是,数组可以和STL算法配合,因为指针可以当作数组的迭代器使用。

    STL的基本操作案例:

     1 #include <iostream>
     2 #include"vector"
     3 #include"algorithm"
     4 
     5 using namespace std;
     6 
     7 class Teacher
     8 {
     9 public:
    10     int age;
    11     char name[64];
    12 
    13     void display()
    14     {
    15         cout<<"age="<<age<<endl;
    16     };
    17 };
    18 
    19 //容器存储基本的数据类型
    20 void fun1()
    21 {
    22     //容器,把你要的数据copy到容器中去
    23     vector<int> v1;
    24     v1.push_back(1);
    25     v1.push_back(3);
    26     v1.push_back(5);
    27 
    28     //迭代器,实际上就是一个指针
    29     for(vector<int>::iterator it=v1.begin(); it!=v1.end(); it++)
    30     {
    31         cout<<*it<<" ";
    32     }
    33 
    34     //算法
    35     int num1=count(v1.begin(),v1.end(),3);
    36     cout<<"num1="<<num1<<endl;
    37 }
    38 
    39 //容器存储类对象
    40 void fun2()
    41 {
    42     Teacher t1,t2,t3;
    43     t1.age=31;
    44     t2.age=32;
    45     t3.age=33;
    46 
    47     vector<Teacher> v2;
    48     v2.push_back(t1);
    49     v2.push_back(t2);
    50     v2.push_back(t3);
    51 
    52     for(vector<Teacher>::iterator it=v2.begin();it != v2.end();it++)
    53     {
    54         it->display();
    55     }
    56 }
    57 
    58 //容器存储指向类对象的指针
    59 void fun3()
    60 {
    61     Teacher t1,t2,t3;
    62     t1.age=31;
    63     t2.age=32;
    64     t3.age=33;
    65 
    66     Teacher* p1=&t1;
    67     Teacher* p2=&t2;
    68     Teacher* p3=&t3;
    69     
    70 
    71     vector<Teacher*> v3;
    72     v3.push_back(p1);
    73     v3.push_back(p2);
    74     v3.push_back(p3);
    75 
    76     for(vector<Teacher*>::iterator it=v3.begin();it != v3.end();it++)
    77     {
    78         (*it)->display();
    79     }
    80 }
    81 
    82 int main()
    83 {
    84     //fun1();
    85     //fun2();
    86     fun3();
    87     return 0;
    88 }

    对STL中各种容器的一个总结:

  • 相关阅读:
    4.变量以及类型
    3.注释
    2.第一个python程序
    1.认识Python
    DB安装
    DB2<RedHed Linux> 创建数据库
    win 7设置主机域名
    FTP 错误1
    FTP 其他设置
    VM浏览器不能访问
  • 原文地址:https://www.cnblogs.com/jswu-ustc/p/8438378.html
Copyright © 2011-2022 走看看