C++ STL----招聘笔试常用数据结构和算法

在招聘笔试的时候常常会遇到软件类的笔试题,一般两小时4个题,这种题一般第一题是送分题,后面题就需要灵活求解,因此在笔试之前非常有必要复习下STL库的使用。


 

栈  stack

在C++中,使用栈需要包含其头文件,#include <stack> ,具体的栈操作如下:

    stack <int> st;  //申明一个int类型的栈st
    st.push(10);     //将10压入栈中
    st.pop();        //将st中顶部元素弹出(出栈)   注意:这里出栈并不会返回其值,该pop函数时无返回值的
    st.top();        //返回栈顶的元素值,         注意:这里不会将其元素弹出
    st.empty();      //判断栈是否为空,空:返回true  非空:返回 false
    st.size();       //获取栈的元素个数
    st.swap();

向量  vector

在C++中,使用向量需要包含其头文件,#include <vector> ,具体的向量操作如下

    vector <int> ve;   //申明一个类型为int的向量
    ve.push_back(10);  //将10添加到向量ve的最后
    ve.pop_back();     //将向量ve最后的元素弹出,即删除 最后一个元素  注意:这里不会有返回值
    ve.back();         //返回向量ve最后一个元素                       注意:这里不会删除最后一个元素
    ve.front();        //返回向量ve第一个元素                         注意:这里不会删除第一个元素
    ve.at(10);         //返回第10个元素的值  也可以用迭代器
    ve.size();         //返回向量的大小
    ve.empty();        //判断向量是否为空,空:返回true  非空:返回 false
    ve.begin();        //向量的开始位置
    ve.end();          //向量的结束位置

图 map

在C++中,使用图需要包含其头文件,#include <map> ,具体的图操作如下:

    map <int,string>mp; //申明一个map类型为int,string的键值对
    mp[0]="hello";      //将mp键值为0的赋值为hello字符串
    mp.insert(pair<int,string>(10,"linux"));//将键值对10,"linux"插入到键值为10的位置上
    mp.at(10);          //返回键值为10的元素
    mp.clear();         //清空整个mp
    mp.begin();         //返回mp迭代器的开始位置
    mp.end();           //返回mp迭代器的结束位置
    mp.empty();         //判断图mp是否为空
    mp.size();          //返回图mp的元素个数

字符串 string

在C++中,使用字符串需要包含其头文件,#include <string> ,具体的字符串操作如下:

 string str;
    str="hello";        //初始化字符串
    str[0];             //返回字符串str第一个字节
    str.size();         //返回字符串str的长度
    str.length();       //返回字符串str的长度
    str.clear();        //清空字符串
    str+="linux";       //追加一个字符串
    str.find('a');      //查找str中是否有'a'这个字符,如果存在,返回其位置,否则,返回str.npos
    str.find("he",3);   //查找str中是否存在he字串,从下标3开始找,如果存在,返回其位置,否则,返回str.npos
    str.find("he");     //查找str中是否存在he字串,从下标0开始找,如果存在,返回其位置,否则,返回str.npos
    str.erase(1,3);     //删除str中第1个字符到第3个字符   
    str.insert(2,"world");//在str的第二个字符后面插入字符串world

链表 list

在C++中,使用链表需要包含其头文件,#include <list> ,具体的链表操作如下:

    list<int> li;               //申明一个链表
    list<int> li{0,1,2};      //申明一个初始化为0,1,2的链表
    li.remove(0);               //移除第一个元素
    li.insert(li.begin(),54);   //在li开始的位置插入一个54
    li.sort();                  //默认从小到大排序
    li.sort(less<int>());       //从小到大排序
    li.sort(greater<int>());    //从大到小排序
    li.size();                  //返回li元素的个数

迭代器 iterator

迭代器是C++提供的一种操作元素的对象,一般用于遍历否个数据结构,部分的数据结构中有迭代器,下面给出部分例程:

    /*
    对向量进行遍历操作
    */
    vector<int>::iterator itv;
    itv=ve.begin();
    for(int i=0;i<ve.size();i++)
    {
        cout<<*itv<<endl;
        itv++;
    }
    for(itv=ve.begin();itv!=ve.end();itv++)
    {
        cout<<*itv<<endl;
    }

    /*
    对图进行遍历操作
    */
    map<int,string>::iterator itm;
    for(itm=mp.begin();itm!=mp.end();itm++)
    {
        cout<<itm->first<<itm->second<<endl;
    }

查找 find()

在很多算法题中经常会用到查找这个过程,在C++中提供了关于查找的函数,其中最常用的就是find()函数,需要包含头文件#include <algorithm>

 

   string::size_type  itfv;
    itfv=*find(ve.begin(),ve.end(),10);//查找是否存在10这个元素
    if(itfv!=str.npos)
    {
        cout<<itfv<<endl;
    }
    else
    {
        cout<<"none"<<endl;
    }

 

在string类型中也有一个find函数,这个函数的使用比较简单,这里简单举个例子

    string::size_type  its;
    its=str.find("dkw");
    if(its!=str.npos)
    {
        cout<<its<<endl;
    }
    else
    {
        cout<<"none"<<endl;
    }
posted @ 2020-09-02 20:21  LSWen  阅读(828)  评论(0编辑  收藏  举报