当前位置: 首页 > news >正文

c++ STL

1.vector

//(1)一维vector<int> v1;v1.push_back(100);v1.pop_back();//删除尾部元素v1.clear();sort(v1.begin(),v1.end(),less<int>());//stable_sort()排序不改变相同值元素的顺序v1.push_back(100);v1.push_back(1000);reverse(v1.begin(),v1.end());int i,len1=v1.size();for(i=0; i<len1; ++i){cout<<v1[i]<<" ";}v1.insert(v1.end(),5,3);//在尾部插入5个值为3的元素v1.erase(v1.begin());   //删除一个指定的元素,后面元素前移v1.erase(v1.begin(),v1.begin()+2);//删除v1[0]--v1[2]之间的元素,后面的元素后移vector<int>v2;cout<<(v1>=v2)<<endl;//从前向后进行比较vector<mmp>v3;v3.push_back({1,2});//(2)二维int n1=10,n2=20;vector<vector<int>> v2(n1,vector<int>(n2));//设置数组长度,默认初始值(默认初始值为0)vector<vector<int>> v3(n1,vector<int>(n2,0));//设置数组长度,给定值初始vector<int> v4={{1,2,3},{2,5,6}};vector<vector<int>> v5(r);//每行不一定几个数,就是想对每行的列进行操作v5[i].push_back(1);//这就是该第i-1行的插入一个元素,值为1vector<vector<int>> v6;//不指定大小int arr[] = {11, 32, 41, 25, 67, 100, 88, 233};  // 列表初始化内置数组vector<int> iv(begin(arr), end(arr));vector<int> iv(arr, arr+8);for(auto c:iv)  // 输出 vector 对象的内容以验证结果cout << c << ' ';cout << endl;

2.queue

void solve()
{queue<int>q1;q1.push(100);cout<<q1.front();//队首元素cout<<q1.back();//队尾元素while(!q1.empty()){cout<<q1.front()<<" ";q1.pop();}
}

3.priority_queue

优先级队列的时间复杂度为O(nlogn)

struct mmp
{int a,b;bool operator<(const mmp &w)const{if(b==w.b){return b>w.b;}return a<w.a;//大的在前面}
};void solve()
{priority_queue<int,vector<int>,less<int> >q1;priority_queue<int>q2;//默认从大到小q1.push(100);while(!q1.empty()){cout<<q1.top()<<" ";q1.pop();}priority_queue<mmp>q3;while(!q3.empty()){cout<<q3.top().a<<" "<<q3.top().b<<endl;q3.pop();}
}

4.string

void solve()
{char s[100]= {"12"};string s1="12";s1=s;s1=s1+"34";s1.insert(s1.begin()+2,'2');s1.erase(s1.begin());   //删除某一个位置的元素s1.erase(s1.begin(),s1.end()-1);//删除某一个区间的元素for(int i=0; i<s1.size(); ++i){cout<<s1.at(i)<<endl;}cout<<s1<<endl;int pos=s1.find("12");if(pos<0){cout<<"不含该字串"<<endl;}elsecout<<pos<<" "<<"找到字串的起始位置"<<endl;reverse(s1.begin(),s1.end());sort(s1.begin(),s1.end());s1.replace(1,2,"3");//在位置1处替换原字符中长度为2的字符串string A("aBcd");string B("Abcd");cout << "A.compare(B):" << A.compare(B)<< endl;s1.push_back('a');//队尾添加字符s1.insert(s1.begin(),'1');//在制定的位置pos前插入字符char
}

5.map

//map 一种映射关系,可以建立string型到int型的映射,就好比数组一样
//map需要确定映射类型(键key)和映射后类型(值value)
void solve()
{map<string,int>mp;mp["a"]=1;  //会覆盖掉原关键字的值cout<<mp["a"]<<endl;map<string,int>::iterator it;for(it=mp.begin(); it!=mp.end(); it++){cout<<it->first<<" "<<it->second<<endl;}map<string,int>::reverse_iterator it2;for(it2=mp.rbegin(); it2!=mp.rend(); it2++){cout<<it2->first<<" "<<it2->second<<endl;}mp.clear();mp.erase("b");mp.erase(mp.begin(),mp.end());cout<<mp.size()<<" "<<mp.empty()<<endl;
}

6.stack

//栈 后进先出		
void solve()
{stack<int>st;st.push(1);while(!st.empty()){cout<<st.top()<<endl;st.pop();}
}

7.set

//set译为集合,是一个内部自动递增排序且去除了重复元素的容器
void solve()
{int p[10]={1,2,3,4,5,6};set<int>st1(p,p+10);set<int>st;st.insert(1);st.erase(1);//删除值为1的元素//二分查找cout<<"第一个大于等于0的值:"<<*st.lower_bound(0)<<endl;cout<<"第一个大于0的值:"<<*st.upper_bound(0)<<endl;set<int>::iterator it1;for(it1=st.begin();it1!=st.end();it1++){cout<<" "<<*it1<<endl;}set<int>::reverse_iterator it2;for(it2=st.rbegin();it2!=st.rend();it2++){cout<<" "<<*it2<<endl;}cout<<st.size()<<" "<<st.count(1)<<endl;it1=st.find(2);st.erase(it1,st.end());st.clear();
}

8.pair

//pair是将2个数据合成一个数据
int cmp1(pair<int,int>a,pair<int,int>b)
{if(a.first!=b.first)return a.first>b.first;     //根据first降序elsereturn a.second<b.second;   //根据second升序
}
struct cmp2
{bool operator()(const pair<int,int> q1,const pair<int,int>q2){if(q1.first==q2.first)return q1.second>q2.second; //根据second升序elsereturn q1.first<q2.first;   //根据first降序}
};void solve()
{pair<int,int>p1;p1=make_pair(1,3);cout<<p1.first<<" "<<p1.second<<endl;pair<int,int>p2[10];p2[1]=make_pair(2,4);cout<<p2[1].first<<" "<<p2[1].second<<endl;vector<pair<int,int> >p3;p3.push_back({1,11});sort(p3.begin(),p3.end(),cmp1);int len=p3.size();for(int i=0; i<len; ++i){cout<<p3[i].first<<" "<<p3[i].second<<endl;}priority_queue<pair<int,int>,vector<pair<int,int> >,cmp2>p4;p4.push({2,2});while(!p4.empty()){cout<<p4.top().first<<" "<<p4.top().second<<endl;p4.pop();}
}


http://www.mrgr.cn/news/95504.html

相关文章:

  • 【机器学习】机器学习工程实战-第2章 项目开始前
  • LLM - 重排序(Rerank)
  • 【计算机网络】网络简介
  • C语言入门教程100讲(8)算术运算符
  • C语言入门教程100讲(3)代码注释
  • C语言入门教程100讲(7)类型转换
  • 【前端】Visual Studio Code安装配置教程:下载、汉化、常用组件、基本操作
  • C语言入门教程100讲(4)输入输出
  • 【AI学习笔记】Coze平台实现将Excel文档批量导入数据库全过程
  • C++学习之网盘项目单例模式
  • MySQL表的增加、查询、修改、删除的基础操作
  • 【HDLBits】Circuits—Combinational Logic合集(包含答案推导过程)
  • 分享最近前端面试遇到的一些问题
  • 【模板】计算几何入门
  • python:music21 构建 LSTM+GAN 模型生成爵士风格音乐
  • 挂谷猜想的证明错误百出
  • 使用flask_restful快速构建接口
  • Python数据可视化工具:六西格玛及其基础工具概览
  • 数据包的路由步骤
  • SysVinit和Systemd的系统运行级别