C++ STL常见用法

一.vector

  1. 应用:用于普通数组会超内存的情况,以邻接矩阵的方式存储图
  2. 定义:typename可以是int、double、char、结构体
  3. 元素访问:下标访问
    迭代器访问:vector< typename >::iterator it;
  4. 函数:
#include<vector>
using namespace std;
vector<typename> V;//定义
vector<vector<typename> > V;//二维定义

int main()
{
    V.push_back(value);//vector后加一个元素
    V.pop_back(value);//删去vector的尾元素
    V.size();//获得vector中元素个数
    V.clear();//清空
    V.insert(it,value);//向vector任意迭代器it处插入一个元素x
    V.erase(it);//删去单个元素
    V.erase(first,last);//删去区间[first,last)内的所有元素
    return 0;
}

二.set

  1. 应用:去重,自动排序
  2. 定义:typename类型同vector;
  3. 元素访问:只能用迭代器set< typename >::iterator it;
  4. 函数:
#include<set>
using namespace std;
set<typename> S;//定义
int main()
{
	S.insert(value);//将x插入set容器中,并自动排序,去重
    S.find(value);//返回对应值为value的迭代器
    S.size();//获得vector中元素个数
    S.erase(it);//根据迭代器位置删除
    S.erase(value);//直接删除某个元素
    S.erase(first,last);//删去区间[first,last)内的所有元素
    S.clear();//清空
    S.insert(it,x);//向vector任意迭代器it处插入一个元素x
    return 0;
}

三.string

  1. 应用:代替一般字符数组char str[];
  2. 访问:
    通过下标访问
    迭代器访问:string::iterator it;
    [注]:如果要读入或者输出,只能用cin,cout
  3. 函数:
#include<string>
using namespace std;
string str;
int main()
{
    str1 += str2;//将str2拼接到str1上
    str1  == str2;//类似的操作还有:!=,<,<=,>,>=
    str.length();//字符串长度
    str.insert(pos,str);//在pos位置上插入str
    str.insert(it,it1,it2)//it为字符串要插入的位置,it1和it2分别是待插入字符串的首尾
    str.erase(it);
    str.erase(first,last);
    str.erase(pos,len);//pos是开始删除的位置,len是要删除的字符串的长度
    str.clear();
    substr(pos,len);//返回从pos开始,长度为len的字符串
    string::npos//一个常数,值为-1,实际也可做unsigned_int的最大值
    str.find(str2);//str2是str子串,返回子串第一次出现的位置,否则返回string::npos
    str.find(pos,str2);//从pos开始找str2,其他同上
    str.replace(pos,len,str2);//将从pos位置开始长为len的子串替换为str2
    return 0;
}

四.map

  1. 应用:可将任何基本类型映射到任何基本类型,相当于python里的字典
  2. 访问:
    通过下标访问:mp[’c‘]=a,注意关键词的类型 通过迭代器访问:map<typename1,typename2>::iterator it;
    可用it->first访问键,it->second访问值 另外,map会以键的自大到小排序
  3. 函数:
#include<map>
using namespace std;
map<typename1,typename2> M;//name1是键的类型,name2是值的类型
int main()
{
	M.find(key);//返回key映射的迭代器
	M.erase(it);
    M.erase(key);//根据键删除
    M.erase(first,last);//删去区间[first,last)内的所有元素
    M.size();
    M.clear();
    return 0;
}

五.queue

  1. 应用:先进先出
  2. 访问:front()访问队首,back()访问队尾
  3. 函数:
#include<queue>
using namespace std;
queue<typename> Q;
int main()
{
	Q.push(value);//入队
	Q.front();//获取队首
	Q.back();//获取队尾
	Q.pop();//出队
	Q.empty();//判断是否为空
	Q.size();
    return 0;
}

六.priority_queue

  1. 访问:只能用top()访问队首元素
  2. 函数:
#include<queue>
using namespace std;
priority_queue<typename> Q;
int main()
{
	Q.push(value);//入队
	Q.top();//获取队首
	Q.pop();//出队
	Q.empty();//判断是否为空
	Q.size();
    return 0;
}
  1. 优先级设置:less< int >表示数字越大优先级越大,great< int >刚好相反;
priority_queue<int,vector<int>,less<int>> Q;
priority_queue<int,vector<int>,great<int>> Q;
priority_queue<typename> Q;//默认为第一种情况
发布了54 篇原创文章 · 获赞 17 · 访问量 9178

猜你喜欢

转载自blog.csdn.net/qq_41979513/article/details/103098215