STL库--map和mulimap

23 篇文章 0 订阅

概述

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

1.所有元素都会根据元素的键值自动排序

2.所有的元素都是pair,同时拥有键值实值

        第一个参数:键值。第二个参数:实值

3.map容器的键值唯一不可变,实值可变

multimap允许key相同

初始化map对象的方式:

map<T1,T2>  v1;//默认的初始化方式,内容为空

map<T1,T2>  v2(v1);//v2是v1的一个副本

map<T1,T2>  v5(v1.begin(),v1.end());//v5包含v1的一个区域元素[v1.begin,v1.end());

map常用函数

v1.empty():判断集合是否为空,为空返回真,否则为假

v1.insert(pair<T1T2>(1,值2)):将v1[值1]=值2插入map中,注意T1和T2要和v1中的一样

v1.insert(map<T1T2>::value_type(1,值2)):将v1[值1]=值2插入map中,注意T1和T2要和v1中的一样

v1[1]=2:将v1[值1]的值设置为值2

        insert的方法,若map中已存在关键字值1,则插入失败

        =的方法,若map中已存在关键字值1,则用值2覆盖原值

        判断是否插入成功的方法

int main()

{

    map<int,float> v1;

    v1[123]=1.23;

    v1[456]=4.56;

    pair<map<int,float>::iterator,bool> yorn;

    yorn=v1.insert(pair<int,float>(123,1.26));

    if(!yorn.second) cout<<"Error";

           

    return 0;

}

//输出Error

v1.begin():返回向量(数组)的首元素地址

v1.end(): 返回向量(数组)的末元素的下一个元素的地址

v1.rbegin():返回逆向队列的第一个数据,即c容器的最后一个数据。

v1.rend():返回逆向队列的最后一个数据的下一个位置,即c容器的第一个数据再往前的一个位置。

map<int,float>::iterator it;

    for(it=v1.begin();it!=v1.end();it++)

            cout<<it->first<<" "<<it->second<<endl;

            

    map<int,float>::reverse_iterator its;

    for(its=v1.rbegin();its!=v1.rend();its++)

            cout<<its->first<<" "<<its->second<<endl;

map中的迭代器是指针,要用->来访问firstsecond

v1.clear():清空向量

v1.size():返回得到向量中元素的个数

v1=v2

swap(v1.v2):交换两个数组

v1.count():用来查找map中某个关键值出现的次数。但是由于map中不允许重复,故用来判断某一键值是否在map出现过了

 

v1.erase(iterator):删除定位器iterator指向的值

v1.erase(first,second):删除定位器first和second之间的值

v1.erase(key_value):删除键值key_value的值

 

 

v1.find():查找一个数,返回给定值的定位器,找不到就返回迭代器end()

 

v1.lower_bound():返回第一个大于等于key_value的定位器

v1.upper_bound():返回第一个大于key_value的定位器

v1.equal_range():返回一对定位器,分别表示第一个大于或等于给定关键值的元素和第一个大于给定关键值的元素,这个返回值是一个pair类型,如果这一对定位器中哪个返回失败,就会等于end()的值

#include <iostream>

#include <set>


using namespace std;


int main(){

     set<int> s;

     set<int>::iterator iter;

     for(int i = 1 ; i <= 5; ++i)

     {

         s.insert(i);

     }

     for(iter = s.begin() ; iter != s.end() ; ++iter)

     {

         cout<<*iter<<" ";

     }

     cout<<endl;

     pair<set<int>::const_iterator,set<int>::const_iterator> pr;

     pr = s.equal_range(3);

     cout<<"第一个大于等于 3 的数是 :"<<*pr.first<<endl;

     cout<<"第一个大于 3的数是 : "<<*pr.second<<endl;

     return 0;

}

map的所有函数

1.map 构造函数

map<T1, T2>  T;//map 默认构造函数:

map(const map &mp);//拷贝构造函数

2.map 赋值操作

map& operator=(const map &mp);//重载等号操作符

swap(mp);//交换两个集合容器

3.map 大小操作

size();//返回容器中元素的数目

empty();//判断容器是否为空

4.map 插入数据元素操作

map.insert(...); //往容器插入元素, 返回 pair<iterator,bool>

map<int, string> mapStu;

        // 第一种 通过 pair 的方式插入对象

        mapStu.insert(pair<int, string>(3, "小张"));

        // 第二种 通过 pair 的方式插入对象(推荐

        mapStu.inset(make_pair(-1, "校长"));

        // 第三种 通过 value_type 的方式插入对象

        mapStu.insert(map<int, string>::value_type(1, "小李"));

        // 第四种 通过数组的方式插入值

        mapStu[3] = "小刘";

        mapStu[5] = "小王";

注意:m[10]是寻找key为10的实值,但是如果容器中没有key为10的值,却使用了m[10],会创建一个key10实值为空的对组

5.map 删除操作

clear();//删除所有元素

erase(pos);//删除 pos 迭代器所指的元素, 返回下一个元素的迭代器。

erase(beg,end);//删除区间[beg,end)的所有元素 , 返回下一个元素的迭代器。

erase(keyElem);//删除容器中 key 为 keyElem 的对组。

6.map 查找操作

find(key);//查找 key 是否存在,若存在, 返回该键的元素的迭代器;若不存在,返回map.end();

count(keyElem);//返回容器中 key 为 keyElem 的对组个数。 对 map 来说, 要么是 0,要么是 1。 对 multimap 来说, 值可能大于 1。

lower_bound(keyElem);//返回第一个 key>=keyElem 元素的迭代器。

upper_bound(keyElem);//返回第一个 key>keyElem 元素的迭代器。

equal_range(keyElem);//返回容器中 key 与 keyElem 相等的上下限的两个迭代器

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STL分解-LSTM是一种深度学习模型,它结合了STL(Seasonal and Trend decomposition using Loess)分解和LSTM(Long Short-Term Memory)模型的特点。在这种方法中,首先使用STL分解将时间序列数据分解为趋势、季节性和残差三个部分。然后,将分解后的趋势和季节性数据作为LSTM模型的输入,用于预测未来的时间序列值。通过结合STL分解和LSTM模型,STL分解-LSTM模型可以更好地捕捉时间序列数据的长期依赖和季节性变化,从而提高预测准确性。引用中的图7展示了ISTL-LSTM模型和STL-LSTM模型的预测结果的比较,而引用中的图6展示了不同深度学习模型(包括ISTL-LSTM,STL-LSTM,LSTM和GRU)在不同超参数设置下的预测效果比较。另外,引用给出了STL分解-LSTM模型的超参数设置,其中包括隐藏层数、神经元数量、训练迭代次数、batch size、dropout率、激活函数、损失函数和优化器的选择。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [《一种改进的STL-LSTM模型:用于COVID-19疫情期间每日公交客流预测》](https://blog.csdn.net/zuiyishihefang/article/details/123320971)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值