1.Vector
#include <vector>
//定义:
vector<int>vec;//用多少开多少;
vector<int>ve(10); //开辟10个空间,内部初始化为0;
vector<int>v[100];//二维;
vector<int>vect = { 0,1,2,3 };
//函数
vec.clear();//清空容器;
for (int i = 1; i <= n; i++) v[i].clear();//一层一层清空;
vec.push_back(3);//末尾放入;
vec.pop_back();//末尾删除;
vec[i] = 2;//修改;
//排序
sort(vec.begin(), vec.end());//一维
for (int i = 1; i <= n; i++)//二维,逐层;
// sort(e[i].begin(), e[i].end());
//删除,需要保证指针链接性
for (auto it = vec.begin(); it != vec.end();) {
if (*it == 4)it = vec.erase(it);//erase函数会返回删除该位的下一位的指针
it++;
}
//插入 vec.insert
for (int i = 0; i < 5; i++)
{
int t; cin >> t;
vec.push_back(t);
}
auto it = vec.begin();
// vec.insert(it, 4,1);//在it位置前插入4个1
//1 2 3➡1 1 1 1 1 2 3
auto f = ++vec.begin(), b = --vec.end();
vec.insert(it,f,b);//在it位置插入区间发f-b的元素
//1 2 3 4 5 ➡ 2 3 4 1 2 3 4 5;
//查找:
int t = lower_bound(vec.begin(), vec.end(), 3) - vec.begin();
//找到第一个大于等于3的数,返回它在vec容器内的下标,如果不存在会返回vec.end()
//遍历方法:
//1
for (auto j : vec)cout << j << ' ';
//2
for (int i = 0; i < vec.size(); i++)
cout << vec[i] << ' ';
2.String
#inclulde<string>
string a, b;
cin >> a >> b;
//函数
a.clear();//清空
a.push_back('b');//在末尾添加一个字符
a.pop_back();//删除最后一个字符
a += b;//字符串相加
int t = a.find('a');//查找第一个a的下标
string s = a.substr(0, 3);//从0下标开始包括此位置往后取3个字符
//如果超出字符长度自动取到末尾终止;
string s = a.substr(3);//从下标为3开始取到结束
3.Pair
#include<iostream>
pair<int, char>pi[10];//通常作为工具和其他容器一起使用
cin >> pi.first >> pi.second;
pi[i] = make_pair(t, k);
cout << pi.first << ' ' << pi.second;
4.map,set (自动去重 ,自动排序)
#include<map>
#include<set>
set<int>se;
map<int, int>mp;
se.insert(1);//插入
mp.insert({ 1,2 });//关键字为1,关键字的关键值为2;
mp[1] = 2;//同上,给关键字赋值;
mp[1] += 2;//关键字的关键值加2;
//函数
mp.erase(2), se.erase(2);//删除
//遍历删除的时候注意指针的衔接 同vectoor
int sum = mp.count();//特定元素出现次数;
int s = mp.size();//长度
auto j = mp.find();//查找关键字的下标,不存在的时候j=mp.end()
auto j = mp.lower_bound(3);//查找第一个大于等于3的下标
//遍历
for (auto j : se)cout << j << endl;
for (auto j : mp)
cout << j.first << ' ' << j.second << endl;//两个值
for (auto it = mp.begin(); it != mp.end(); it++)
cout << (*it).first << ' ' << (*it).second << endl;
for (auto it = se.rbegin(); it != se.rend(); it++)//反向遍历
cout << *it << endl;
5.multimap、multiset
和map,set基本类似,无去重功能