STL的一些基本概念

Posted 8号prince

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的一些基本概念的主要内容,如果未能解决你的问题,请参考以下文章

C++的探索路20标准模板库STL之STL的基本概念与容器

C++的探索路20标准模板库STL之STL的基本概念与容器

STL库之集合基本使用方法

STL 容器的概念

Flask模板宏的概念和基本使用

STL概念