zoukankan      html  css  js  c++  java
  • 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;
        }
  • 相关阅读:
    html5--4-1 video/视频播放
    html5--3.22 综合实例03
    html5--3.21 课程小结与其他新增元素
    html5--3.20 新增的keygen元素
    UVA11324-- The Largest Clique(SCC+DP)
    memset函数具体说明
    XMPP协议的原理介绍
    探索WebKit内核(一)------ 菜鸟起步
    图像切割之(一)概述
    LeetCode——Count and Say
  • 原文地址:https://www.cnblogs.com/listenscience/p/13603950.html
Copyright © 2011-2022 走看看