C STL 招聘筆試常用資料結構和演算法

2022-05-04 22:24:06 字數 3868 閱讀 6651

在招聘筆試的時候常常會遇到軟體類的筆試題,一般兩小時4個題,這種題一般第一題是送分題,後面題就需要靈活求解,因此在筆試之前非常有必要複習下stl庫的使用。

棧  stack

在c++中,使用棧需要包含其標頭檔案,#include ,具體的棧操作如下:

stack  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  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 mp; //

申明乙個map型別為int,string的鍵值對

mp[0]="

hello

"; //

將mp鍵值為0的賦值為hello字串

mp.insert(pair(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

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 li;               //

申明乙個鍊錶

list li; //

申明乙個初始化為0,1,2的鍊錶

li.remove(0); //

移除第乙個元素

li.insert(li.begin(),54); //

在li開始的位置插入乙個54

li.sort(); //

預設從小到大排序

li.sort(less()); //

從小到大排序

li.sort(greater()); //

從大到小排序

li.size(); //

返回li元素的個數

迭代器 iterator

迭代器是c++提供的一種操作元素的物件,一般用於遍歷否個資料結構,部分的資料結構中有迭代器,下面給出部分例程:

/*

對向量進行遍歷操作

*/vector

::iterator itv;

itv=ve.begin();

for(int i=0;i)

for(itv=ve.begin();itv!=ve.end();itv++)

/*對圖進行遍歷操作

*/map

::iterator itm;

for(itm=mp.begin();itm!=mp.end();itm++)

查詢 find()

在很多演算法題中經常會用到查詢這個過程,在c++中提供了關於查詢的函式,其中最常用的就是find()函式,需要包含標頭檔案#include

string

::size_type itfv;

itfv=*find(ve.begin(),ve.end(),10);//

查詢是否存在10這個元素

if(itfv!=str.npos)

else

在string型別中也有乙個find函式,這個函式的使用比較簡單,這裡簡單舉個例子

string

::size_type its;

its=str.find("

dkw"

);

if(its!=str.npos)

else

資料結構之C STL庫

include include using namespace std void print vector int v cout endl int main print v vector int iterator it v.begin it 3 將3賦值給開頭元素v 0 it 前移乙個位置 it v...

資料結構筆試題

一 如何判斷乙個單鏈表是有環的?注意不能用標誌位,最多只能用兩個額外指標 struct node bool check const node head return false 無環 true 有環 一種o n 的辦法就是 搞兩個指標,乙個每次遞增一步,乙個每次遞增兩步,如果有環的話兩者必然重合,反...

資料結構筆試1

neg ax 取ax反 低字反碼 mov bx,0 清0 sbb bx,dx 帶借位bx cf dx mov dx,bx 求dx 反碼 sbb 是帶借位減法 有個cf標誌值要減 inc ax 是迴圈程式段入口標號bai,迴圈體有2條指令 nop 是空操作du,即 zhi原地踏一步 inc ax 功能...