C++ STL 泛型编程
好久没有学习C++了,很多STL库不太熟练,于是将这次学习的STL库记录下来,不适合初学者,只是参考罢了。
首先是向量
#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
//vector<double> v(10,8.6); //共定义了10个元素,每个元素值8.6
vector<int> v;
v.push_back(8);
v.push_back(7);
v.push_back(9);
//printf("%d",v[0]); //下标访问元素
//v.insert(v.end(),8);
//v.erase(v.begin(),v.begin()+2);
//reverse(v.begin(),v.end()); //翻转
sort(v.begin(),v.end());
vector<int> ::iterator it;
for(it=v.begin();it!=v.end();it++)
printf("%d ",*it);
return 0;
}
字符串
#include<cstdio>
#include<string>
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int main()
{
string s;
//char ss[100];
//scanf("%s",&ss); //赋值
//s = ss;
//s.append("23456");
//cout<<s<<endl;
s = "123456789";
//s.replace(3,3,"good");
//cout<<s<<endl;
//cout<<s.find("23")<<endl;
//reverse(s.begin(),s.end());
//cout<<s<<endl;
vector<string> v;
v.push_back("jack");
v.push_back("Lucy");
v.push_back("Tom");
cout<<v[0]<<endl;
return 0;
}
set集合
#include<cstdio>
#include<set>
using namespace std;
int main()
{
set<int> s;
s.insert(3);
s.insert(4);
s.insert(1);
set<int> ::iterator it;
for(it=s.begin(); it!=s.end(); it++)
printf("%d",*it);
return 0;
}
map容器
#include<cstdio>
#include<string>
#include<map>
#include<iostream>
using namespace std;
int main()
{
map<string,float> m;
m["jack"] = 2;
m["tom"] = 3;
map<string,float> ::iterator it;
//m.erase("jack");
//for(it=m.rbegin(); it!=m.rend(); it++)
//cout<<(*it).first<<":"<<(*it).second<<endl;
it = m.find("tom");
if(it!=m.end())
cout<<(*it).first<<":"<<(*it).second<<endl;
return 0;
}
deque双端队列容器
#include<cstdio>
#include<deque>
using namespace std;
int main()
{
deque<int> d;
d.push_back(1);
d.push_back(2);
d.push_back(3);
//printf("%d",d[0]);
d.push_front(10); //从头部插入元素,不会增加元素,只会将原有数据覆盖
d.push_front(20);
d.pop_front();
d.pop_back();
//printf("%d %d %d",d[0],d[1],d[2]);
d.clear();
for(int i=0;i<d.size();i++)
printf("%d ",d[i]);
return 0;
}
list双向链表容器
#include<cstdio>
#include<list>
#include<iostream>
using namespace std;
int main()
{
list<int> l;
l.push_back(2);
l.push_back(3);
l.push_back(1);
l.push_back(3);
l.sort(); //排序
l.unique(); //删除连续重复元素
printf("%d",l.size());
list<int> ::iterator it;
for(it=l.begin(); it!=l.end();it++)
printf("%d ",*it);
return 0;
}
bitset位集合容器
#include<cstdio>
#include<bitset>
#include<iostream>
using namespace std;
int main()
{
bitset<10> b;
//b[1] = 1;
//b[2] = 1;
//b[9] = 1;
//b.set(); //一次性将元素设置为1
b.set(2,1);
for(int i=0;i<b.size();i++)
cout<<b[i]<<endl;
return 0;
}
stack堆栈容器
#include<cstdio>
#include<stack>
#include<iostream>
using namespace std;
int main()
{
stack<int> s;
s.push(2);
s.push(4);
s.push(6);
cout<<s.top()<<endl;
s.pop();
cout<<s.top()<<endl;
return 0;
}
queue队列容器
#include<cstdio>
#include<queue>
#include<iostream>
using namespace std;
int main()
{
queue<int> q;
q.push(1);
q.push(2);
q.push(3);
//cout<<q.front()<<endl;
while(!q.empty())
{
cout<<q.front()<<endl;
q.pop();
}
return 0;
}
priority_queue优先队列容器
#include<cstdio>
#include<queue>
using namespace std;
int main()
{
priority_queue<int> pq; //优先队列 最大的元素始终在前
pq.push(2);
pq.push(1);
pq.push(3);
pq.push(8);
while(!pq.empty())
{
printf("%d ",pq.top());
pq.pop();
}
return 0;
}
在这边,对运算符重载不太理解,于是就放弃了说明,当以后如果用到再来补充。