学习目标:
- 掌握 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;
}
原文链接: