2021-1-20 vector、map、queue、set整理(补


一、容器vector

vector用法详解

二、容器map

1.map简介

map是stl的一个关联容器,它提供一对一的hash。

  1. 第一个可以称为关键字(key),每个关键字只能在map中出现一次;
  2. 第二个可能称为该关键字的值(value)。

2.map的功能

自动建立key-value的对应。key和value可以是任何需要的类型,包括自定义类型。

3.使用map

  1. 使用map得包含map类所在的头文件
#include<map>
  1. map的定义
std:map<int,string>personnel;

4.mapde构造函数

5.插入元素

//定义一个map对象
map<int,string>mapStudent;
//第一种 用insert函数插入pair
mapStudent.insert(<pair<int,string>(000,"student_zero"));
// 第二种 用insert函数插入value_type数据
mapStudent.insert(map<int, string>::value_type(001, "student_one"));
// 第三种 用"array"方式插入
mapStudent[123] = "student_first";
mapStudent[456] = "student_second";

6.删除于清空元素

//迭代器刪除
iter = mapStudent.find("123");
mapStudent.erase(iter);
 
//用关键字刪除
int n = mapStudent.erase("123"); //如果刪除了會返回1,否則返回0
 
//用迭代器范围刪除 : 把整个map清空
mapStudent.erase(mapStudent.begin(), mapStudent.end());
//等同于mapStudent.clear()

7.map的大小

int nSize = mapStudent.size();

8.map的基本操作

 begin()        返回指向map头部的迭代器

 clear()        删除所有元素

 count()         返回指定元素出现的次数

 empty()         如果map为空则返回true

 end()           返回指向map末尾的迭代器

 equal_range()   返回特殊条目的迭代器对

 erase()         删除一个元素

 find()          查找一个元素

 get_allocator() 返回map的配置器

 insert()        插入元素

 key_comp()      返回比较元素key的函数

 lower_bound()   返回键值>=给定元素的第一个位置

 max_size()      返回可以容纳的最大元素个数

 rbegin()        返回一个指向map尾部的逆向迭代器

 rend()          返回一个指向map头部的逆向迭代器

 size()          返回map中元素的个数

 swap()           交换两个map

 upper_bound()    返回键值>给定元素的第一个位置

 value_comp()     返回比较元素value的函数

三、队列queue

队列结构:先进先出(FIFO)

1.使用标准库的队列时,先包含相关的头文件

#include<queue>

2.定义队列如下:

queue<int> q;

3.队列提供了如下操作

q.empty()               如果队列为空返回true,否则返回false
q.size()                返回队列中元素的个数
q.pop()                 删除队列首元素但不返回其值
q.front()               返回队首元素的值,但不删除该元素
q.push()                在队尾压入新元素
q.back()                返回队列尾元素的值,但不删除该元素

4.优先队列

在头文件中,还定义了一个模版类priority_queue(优先队列),优先队列与队列的差别在于优先队列不是按照入队的顺序出队,而是按照队列中元素的优先权顺序出队(默认为大者优先,也可以通过指定算子来指定自己的优先顺序)
代码如下:

扫描二维码关注公众号,回复: 14650674 查看本文章
    #include<iostream>  
    #include<queue>  
    #include<stdlib.h>  
    using namespace std;  
    class T  
    {
    
      
    public:  
        int x,y,z;  
        T(int a,int b,int c):x(a),y(b),z(c)  
        {
    
      
        }  
    };  
    bool operator<(const T&t1,const T&t2)  
    {
    
      
        return t1.z<t2.z;  
    }  
    int main(void)  
    {
    
      
        priority_queue<T>q;  
        q.push(T(4,4,3));  
        q.push(T(2,2,5));  
        q.push(T(1,5,4));  
        q.push(T(3,3,6));  
        while(!q.empty())  
        {
    
      
            T t=q.top();  
            q.pop();  
            cout<<t.x<<" "<<t.y<<" "<<t.z<<endl;  
        }  
        system("Pause");  
        return 1;  
    }  

四、栈stack

队列结构:先进先出(FIFO)

1.使用标准库的队列时,先包含相关的头文件

#include<stack>

2.定义栈如下:

stack<int> stk;

3.栈提供了如下操作

stk.empty()               如果栈为空返回true,否则返回false
stk.size()                返回栈中元素的个数
stk.pop()                 删除栈顶元素但不返回其值
stk.top()                 返回栈顶的元素,但不删除该元素
stk.push()                在栈顶压入新元素

总结

猜你喜欢

转载自blog.csdn.net/m0_52433146/article/details/112968149
今日推荐