map
map是一种键值对容器。
特点:键唯一且基本数据类型按从小到大升序排列。
使用方法如下
#include <iostream> //输入输出头文件
#include <map> //map头文件
using namespace std; //命名空间
map<char,int> m; //声明一个名为m的map
int main(){
/*向map中插入数据*/
m.insert(pair<char, int>('b', 3)); //以pair的方式插入数据
m.insert(pair<char, int>('a', 2));
m['d'] = 5; //普通方式插入数据
m['c'] = 3;
m['e'] = 6;
/*删除map中的数据*/
char ch = 'e'; //声明字符变量
m.erase('d'); //删除元素 d
m.erase(ch); //通过变量名删除
m.erase(m.begin()); //通过迭代器删除
/*遍历map(注:m['e'] = 6中,e为键,6为值)*/
map<char, int>::iterator iter; //声明一个迭代器
for(iter = m.begin(); iter != m.end(); iter++){ //使用迭代器遍历map
cout << iter->first << " "; //输出 键
cout << iter->second << endl; //输出 值
}
/*count方式判断元素是否存在*/
if(m.count('d') == 1){ //返回值0表示没有,1表示有
cout << "d 在map中" << endl;
}else{
cout << "d 不在map中" << endl;
}
/*find方式判断元素是否存在*/
if(m.find('d') != m.end()){ //没有找到返回end();
cout << "d 在map中" << endl;
}else{
cout << "d 不在map中" << endl;
}
/*修改map中的值*/
m['d']++; //将d元素的值加1
/*map的容量相关用法*/
if(m.empty()){ //map为空返回1,否则返回0
cout << "map为空!" << endl;
}else{
cout << "map不为空!" << endl;
}
cout << m.size() << endl; //输出map的大小
return 0;
}
set
特点:元素唯一且默认从小到大升序排列
使用方法如下
#include <iostream> //输入输出头文件
#include <set> //set头文件
using namespace std; //命名空间
set<int> s; //声明一个set
int main(){
/*向set中插入数据*/
s.insert(1); //插入数据
s.insert(1); //插入重复数据(只保存一个)
s.insert(2);
s.insert(3);
s.insert(4);
/*删除set中的数据*/
int tmp = 1; //声明一个变量
s.erase(1); //直接删除数据
s.erase(tmp); //通过变量名删除
s.erase(s.begin()); //通过迭代器删除
/*count方式判断元素是否存在,与map类似*/
if(s.count(2) == 1){ //返回值0表示没有,1表示有
cout << "2 在set中" << endl;
}else{
cout << "2 不在set中" << endl;
}
/*find方式判断元素是否存在*/
if(s.find(2) != s.end()){ //没有找到返回end();
cout << "2 在set中" << endl;
}else{
cout << "2 不在set中" << endl;
}
/*遍历set*/
set<int>::iterator it;
for(it = s.begin(); it != s.end(); it++){ //只能使用 != 判断
cout << *it << endl; //注意和map的区别
}
/*set也有empty()和size()两个函数,与map相同*/
return 0;
}
queue
与普通队列一样,这是STL中提供的方法
使用方法如下
#include <iostream> //输入输出头文件
#include <queue> //队列头文件
using namespace std; //命名空间
queue<int> q; //声明一个名为q的队列
int main(){
/*在队列末尾增加一个元素*/
q.push(2);
q.push(3);
q.push(2);
q.push(3);
/*删除队列第一个元素*/
q.pop();
/*查看队列的元素*/
cout << q.front() << endl; //输出队列第一个元素(不删除)
cout << q.back() << endl; //输出队列最后一个元素(不删除)
cout << q.size() << endl; //输出队列的大小
/*判断队列是否为空*/
if(q.empty()){ //为空返回1,否则返回0
cout << "队列为空!" << endl;
}else{
cout << "队列不为空!" << endl;
}
return 0;
}
stack
与平时提到的栈一样,这里是STL中栈的使用方法
使用方法如下
#include <iostream>
#include <stack>
using namespace std;
stack<int> s;
int main(){
/*向栈顶增加元素*/
s.push(3);
s.push(4);
s.push(7);
s.push(0);
/*移除栈顶元素*/
s.pop();
/*输出栈顶元素(不删除)*/
cout << s.top() << endl;
/*输出栈的大小*/
cout << s.size() << endl;
/*判断队列是否为空的方法与queue相同*/
return 0;
}