list和map(STL基本容器)

list

list(双向链表),除了第一个和最后一个元素外,每个元素都与前后的元素相连接,这意味着可以双向遍历链表,list和vector之间关键区别在于,list在链表中任一位置进行插入和删除的时间都是固定的(vector模版提供了除结尾处外的线性时间的插入和删除,在结尾处,它提供了固定时间的插入和删除)。因此,vector强调的是通过随机访问快速访问,而list强调的是元素的快速插入和删除。list也可以反转容器,list不支持数组表示法和随机访问。list是一个双向链表,而单链表对应的容器则是foward_list。

list的头文件

#include < list>

值得注意的是,list容器不能调用algorithm下的sort函数进行排序,因为sort函数要求容器必须可以随机存储,而list做不到。

map

map运用了哈希表地址映射的思想,也就是key-value的思想,来实现的。内部元素按照key哈希排序。首先给出map最好用也最最常用的用法例子,就是用字符串作为key去查询操作对应的value。

注意:在查找一个不存在的key的时候,map会自动生成这个key,这里涉及到如何安全和挑选符合自己业务逻辑的关联容器格外重要。

头文件
#include< map>
//
// main.cpp
// set

#include < iostream>
#include < string>
#include < map>
using namespace std;

void showmap(map<string, int> v)
{
for (map<string, int>::iterator it = v.begin(); it != v.end(); it++)
{
cout << it->first << " " << it->second << endl; //注意用法,不是用*it来访问了。first表示的是key,second存的是value
}
cout << endl;
}
int main(int argc, const char *argv[]) {

map<string, int> m1; ///<里的第一个参数表示key的类型,第二个参数表示value的类型
m1["year"] = 2018;
m1["month"] = 8;
m1["day"] = 10;

string s("month");
m1[s] = 7;

cout << m1["year"] << endl;
cout << m1["month"] << endl;
cout << m1["day"] << endl; //不存在这个key,就显示0,并在map中创建没有的key

m1.erase("minute");//通过关键字来删除
showmap(m1);
m1.insert(pair<string, int>("second", 52)); //也可以通过insert函数来实现增加元素
showmap(m1);
m1.clear(); //清空全部

return 0;

}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值