c到c++:STL容器(2)

学习目标:

  • 掌握 c++入门知识

学习内容:

STL容器:vector、set、map、undered_set&undered_map、stack、queue


学习时间:

6.27 周二下午


学习记录:

容器就是用来装东西的,主要操作是“增 删 查 改”
头文件:#include <bits/stdc++.h>

长度计算:size函数

queue <int> q;
q.size();

定义:STL容器名 <类型> 名字 ,如:queue <int> q 

迭代器:用于容器输出

for(auto p=q.begin();p!=q.end();p++)//这个就是迭代器
	{
		cout<<*p<<" ";
	}

1.vector 

vector叫动态数组,基本用法如下:

#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main(){
    vector <int> q;//创建名为q的int型动态数组,默认值为0
    vector <int> a(10);//创建长度为10的动态数组,默认值为0
    vector <int> b(10,2);//创建长度为10的int型动态数组,默认值为2
    cout<<"分配前长度"<<q.size()<<endl;
    q.resize(10);//为q分配10个空间
    cout<<"分配后长度"<<q.size()<<endl;
    q.push_back(1);//在q中增加一个1
    cout<<"追加后长度"<<q.size()<<endl;
    //利用迭代器进行输出
    for(auto p=q.begin();p!=q.end();p++)//不知道q长度时可以直接使用
    {
        cout<<*p<<" ";
    }
    return 0;
}

2.set

set叫集合,集合内元素不能重复,并且会按照从小到大自动排序,基本用法如下:

#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main(){
    set <int> s;//s后面什么都不用加,集合不能规定大小
    s.insert(4);//插入
    s.insert(3);
    s.insert(2);
    s.insert(1);
    for(auto p=s.begin();p!=s.end();p++)//迭代器
    {//从小到大自动排好序
        cout<<*p<<" ";
    }
    cout<<endl;
    //find()是查找函数,其返回值是一个指针
    //要是找到了就说明在end()之前,反之则不在集合里
    cout<<"删除前"<<(s.find(2)!=s.end())<<endl;
    s.erase(2);//删除s中的2
    cout<<"删除后"<<(s.find(2)!=s.end())<<endl;
    for(auto p=s.begin();p!=s.end();p++)
    {//从小到大自动排好序
        cout<<*p<<" ";
    }
    return 0;
}

3.map

map叫键值对,类似于结构体,键值对中的两个元素是对银行的,会按照键的值从小到大自动排序,基本用法如下: 

#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main()
{
	map <string,int> m;//创建名为m的键值对 
	m["hello"]=2;
	m["world"]=3;
	m["apple"]=4;
	cout<<m["hello"]<<endl;//这样是输出后面的值,这里就是2
	//有时候不知道它里面都有哪些东西,这时候迭代器就派上用场了 
	cout<<"迭代器输出:"<<endl; 
	for(auto p=m.begin();p!=m.end();p++)
		{
			cout<<p->first<<" "<<p->second<<endl;
		}
	//这个迭代器有点不一样 ,因为键值对和结构体很像
	//struct指针用p->,map也用p-> 
	//p->first就是键,p->second就是值 
	cout<<"m的长度为 "<<m.size()<<endl; 
	return 0;
}

 

4.undered_set和undered_map

这俩就是不自动排序的set和map,其余和set map一模一样

5.stack和queue

stack叫栈,queue叫队列,栈和队列是最常用的两个容器,这俩都不支持迭代器

s.pop();//出栈(队)
s.push();//入栈(队)
q.front();//访问队首
q.endl();//访问对位

队列的遍历方法如下:

#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main()
{
	queue <int> q;
	for(int i=1;i<=4;i++)
	{
		q.push(i)//入队 
	}
	while(q.size()!=0)//q.size()是求其长度 
	{
		cout<<q.front()<<" ";
		q.pop();//出队 
	}	
	return 0;
}


原文链接:

https://blog.csdn.net/wfuzhuandaaliu/article/details/122518316icon-default.png?t=N5K3https://blog.csdn.net/wfuzhuandaaliu/article/details/122518316

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值