C++ STL泛型编程

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;
}

在这边,对运算符重载不太理解,于是就放弃了说明,当以后如果用到再来补充。

你可能感兴趣的:(C语言,STL)