zoukankan      html  css  js  c++  java
  • 【ACM非算法部分】STL汇总

    stack
    queue
    priority_queue
    map
    set
    pair

    ======================================

    stack:(栈)

    包含:#include<stack>

    定义:stack<value_type> S;

    入栈:void push(const value_type& x)  如:S.push(i);

    出栈:void pop()

    取栈顶:value_type& top()  要注意的是,pop函数没有返回值,不能接收出栈的元素。要接收,要在pop之前使用top函数。

    判栈空:bool empty()  返回 true 表示堆栈已空,false 表示堆栈非空。  如:if(!S.empty()){}

    栈的大小:size_type size()   返回栈内元素的个数。

    ======================================

    queue:(队列)

    包含:#include<queue>

    定义:queue<value_type> Q;

    入队:void push(const value_type& x)       如:Q.push(i);

    出队:void pop()

    取队头:value_type& front()

    取队尾:value_type& back()

    判队空:bool empty()  返回 true 表示队已空,false 表示队非空。

    队的大小:size_type size()   返回元素的个数。

    ======================================

    priority_queue:(优先队列)

    包含:#include<queue>

    定义:priority_queue<value_type> Q;

    入队:void push(const value_type& x)       如:Q.push(i);

    出队:void pop()

    取队头:value_top& top()

    判队空:bool empty()  返回 true 表示队已空,false 表示队非空。

    队的大小:size_type size()   返回元素的个数。

    这个是大顶堆。

    如果优先队列的元素类型是结构体,可以通过在结构体中重载“<“操作符的方法来修改优先队列的优先性。

    如:bool operator<(const value_type &a) const;//重载小于号

    ======================================

    map:(映射)

    包含:#include<map>

    定义:map<int,string> M;

    插入元素:
    M.insert(map<int,string>::value_type(2,”two”));//不覆盖
    M[2]=”two”;//覆盖

    判断元素存在:M.count(2)!=0//值为0表示不存在
    M.find(2)!=M.end()//成立表示存在。效率高于上一条

    查找元素:
    M[2];//要先判断元素是否存在,返回存储的数据,若不存在会创建一个
    M.find(2);//返回iterator类型,指向查找到的元素,若返回值等于M.end(),说明元素不存在。

    删除元素:M.erase(2);//删除关键码为2的元素

    iterator erase(iterator it); //通过一个条目对象删除

    第一个元素:M.begin();

    最后一个元素:M.end();

    全部元素的遍历:
    map<string,string>::iterator it;
    for(it=M.begin();it!=M.end();it++)
        cout<<it->second<<endl;

    it->first代表关键码,it->second代表存储的数据
    ======================================

    set:(集合)

    包含:#include<set>

    定义:set<int> s;

    插入元素:s.insert(1);

    判断元素存在:s.count(1)!=0 //存在  也可以用s.find(1)!=s.end();效率较高

    删除元素:s.erase(1);

    清空所有元素:s.clear();

    查找元素:s.find(1); //返回迭代器iterator

    ======================================

    pair:

    包含:#include<utility>   且 algorithm 和 map 也包含了这个头文件

    定义:pair<int,int> p;

    首元素:p.first

    次元素:p.second

    默认小于符:p1<p2 等价于 p1.first < p2.first  ||  ( !(p1.first < p2.first) && p1.second < p2.second)

          因此,组成pair的两种类型必须已经重载了小于号。

     (还有其他。。。)

  • 相关阅读:
    全卷积网络(FCN)与图像分割
    Mac下编译tesseract报错 DotProductAVX can't be used on Android
    OSTU二值化算法
    ssh的用户配置文件config管理ssh会话
    SSD: Single Shot MultiBox Detector 编译方法总结
    论文笔记——A Deep Neural Network Compression Pipeline: Pruning, Quantization, Huffman Encoding
    LeetCode——Word Break
    C#多线程编程
    impinj 编程接口
    C# 委托实例(跨窗体操作控件)
  • 原文地址:https://www.cnblogs.com/syiml/p/3656191.html
Copyright © 2011-2022 走看看