/*
基础数据结构
deque 队列 双向表
list 双向链表
vector 单向链表
*/
#include <iostream>
#include <deque>
#include <list>
#include <algorithm>
#include <stack>
#include <vector>
#include <queue>
#include <map>
#include<set>
using namespace std;
int main01()
{
deque<int> a;
a.push_back(2); //从后进
a.push_back(3);
a.push_back(4);
a.push_front(1);//从前面进
for (size_t i = 0; i < a.size(); i++)
{
cout << a[i] << endl;
}
a.pop_back();//从后面删除
a.pop_front();//从前删除
deque<int>::iterator it;
for (it = a.begin(); it != a.end(); it++ ) //迭代器遍历
{
rsize_t nset = distance(a.begin(),it); //算法求点
cout << *it << endl;
}
getchar();
return 0;
}
/*
list 双向链表
*/
int main02()
{
//using namespace std;
list <int> b;
b.push_back(1);//往后插入
b.push_back(2);
b.push_back(3);
b.push_front(11);//前插入
b.insert(b.begin(),2);//中间,收尾参数是迭代器
b.insert(b.end, 4, 20);//末尾插入4个20
std::list<int>::iterator iter;
for (iter = b.begin(); iter != b.end(); iter++)
{
cout << *iter << endl;
}
list <int> c;
c.push_back(2);
c.push_back(3);
c.push_back(4);
//将另外一个队列插入
b.insert(b.begin(),c.begin(),c.end());
}
/*
statck
1.LIFO 先进先出
*/
int main03()
{
stack<int, deque<int> >a;
stack<int, vector<int>> b;
stack<int, list<int>> c;
stack<int> d;
d.empty(); //判断是否为空
d.size(); //大小
d.pop(); //弹出
d.top();
d.push(1); //压入
return 0;
}
/*
queue 队列 先进先出
*/
int main03()
{
queue<int, deque<int>> a;//用deque创建 队列创建
queue<int, list<int> > b; //
}
/*
map (映射) multimap (多隐射)
红黑树
inset :4种方法
cout find
erase:3种方法
*/
int main04()
{
map<int, string> a; //不可重复
multimap<int, string> ma; //可重复
a.insert(map<int, string>::value_type(1, "one"));//插入
a.insert(pair<int, string>(1222, "One"));
a[1000] = "123";//最简单
ma.insert(multimap<int, string>::value_type(3, "2123"));
ma.insert(multimap<int, string>::value_type(4, "222123"));
ma.insert(multimap<int, string>::value_type(5, "12123"));
//查找,有可能重复
multimap<int, string>::const_iterator it;
it = ma.find(3);
if (it != ma.end())
{
rsize_t n = ma.count(100);
for (size_t i = 0; i < n; i++)
{
std::cout << (*it).second << endl;
it++;//重复打印
}
}
//查找
if (ma.erase(-1) > 0)
{
cout << "删除成功!" << endl;
}
}
/*
set集合
红黑树(数据结构)
基本数据类型
不可重复集合
*/
int main()
{
std::set<int> a;//不可重复,且自动排序(内部红黑树决定)
std::multiset<int> ma;//可重复
a.insert(123); //插入
a.insert(122);
a.insert(125);
set<int>::const_iterator it = a.begin();
while (it !=a.end())
{
cout << *it << endl;
}
ma.insert(3000);
ma.insert(a.begin(), a.end()); //将a中的数字插入
ma.insert(3000);
}