#include <array>
#include <vector>
#include <queue>
#include <map>
#include <unordered_map>
#include <utility>
#include <set>
#include <unordered_set>
#include <tuple>
#include <iostream>
using namespace std;
void testArray ()
{
//大小不可变,初始化需知道其大小,可通过索引获得值;
array<int, 5> arr = { 1, 2, 7, 4, 5 };
//遍历;
for (const auto i : arr)
{
cout << i << endl;
}
//获取索引为2的值;
cout << arr[2] << endl;
cout << arr.at(2) << endl;
//array的大小;
cout << arr.size()<< endl;
return;
}
void testVector()
{
//可变数组,动态改变大小,一般建议使用vector;
vector<int> vec = {2, 7, 4, 3, 1};
//增加容量;
vec.reserve(20);
//获取索引为0的数据;
cout << vec[0]<< endl;
cout << vec.at(0) << endl;
//头尾数据;
cout << vec.front() << endl;
cout << vec.back() << endl;
//增减元素;
vec.push_back(10);
vec.pop_back();
vec.insert(vec.end(), 11);
//遍历;
for (int i = 0; i < vec.size(); i++)
{
cout << vec[i] << endl;
}
return;
}
void testQueue()
{
queue<int> que;
que.push(1);
que.pop();
que.front();
que.back();
que.size();
return;
}
void testPair()
{
pair<char, int> pa = {'a', 0};
cout << pa.first << endl;
cout << pa.second << endl;
}
void testTuple()
{
//存储多个不同类型的元素;
auto tuple = make_tuple('a', 20, 1);
//获取元素;
cout << get<1>(tuple) << endl;
}
void testSet()
{
//set中不能存在相同的元素;
set<int> se = { 1, 2, 4 };
se.insert(5);
for (auto i : se)
{
cout << i << endl;
}
//无序set;
unordered_set<int> un_se = { 2, 7, 6, 9 };
un_se.insert(11);
for (auto i : un_se)
{
cout << i << endl;
}
}
void testMap()
{
map<char, int> m = { {'a', 0}, {'b', 1} };
//单值插入
m['d'] = 3;
//多值插入
m.insert({ { 'c', 2 }, { 'e', 4 } });
for (auto i : m)
{
cout << i.first << endl;
cout << i.second << endl;
}
//查找键,并输出值;
map<char, int>::iterator iter = m.find('a');
if (iter != m.end())
{
cout << iter->second << endl;
}
//对键值计数;
cout << m.count('a') << endl;
}
int main()
{
testMap();
return 0;
}