STL之map常用功能

2021-09-22 18:16:20 字數 3167 閱讀 2294

#include #include #include #include #include #include using namespace std;

mapnum;

/** * 用分隔符解析字串

*/void splittoarray(const std::string &src, const std::string &sep, std::vector&destarray, bool filtempty = false)

std::string::size_type posbegin = 0;

std::string::size_type posend = src.find(sep);

std::string value;

while (posend != std::string::npos)

posbegin = posend + 1;

posend = src.find(sep, posbegin);

} value = src.substr(posbegin, src.size() - posbegin);

if (!(filtempty && value.empty())) }

/** * 號碼解析:把檔案中讀取到的一條號碼記錄解析成乙個結構體

*/ret_errorcode parsenumber(const char* record, number& number)

std::string numberrecord(record);

std::vectorrecordarray;

std::string::size_type posbegin = 0;

std::string::size_type posend = numberrecord.find("\r\n");

//去掉回車換行

if (posend != std::string::npos)

else }

//獲取|分隔符分割的資料

splittoarray(numberrecord, "|", recordarray);

//合法資料只有6個字段

if (recordarray.size() != 6)

strcpy_s(number.id, recordarray[0].c_str());

number.price = (float)atof(recordarray[1].c_str());

strcpy_s(number.brand, recordarray[2].c_str());

number.status = atoi(recordarray[3].c_str());

strcpy_s(number.customer, recordarray[4].c_str());

number.time = atoi(recordarray[5].c_str());

return e001;

}long tolong(const char *p)

return r;

}/**

* 初始化:使用初始化指令讓系統重新完成初始化,各條記錄(如號碼記錄)清空,時間狀態初始化等。

*/ret_errorcode initsys()

/** * 載入號碼:讀取numbers.txt格式的資料檔案,載入所有號碼資訊到系統中。

*/ret_errorcode loadnumbers(const char* filename)

number tem;

string s;

while (getline(infile, s))

num[tolong(tem.id)] = tem;

} infile.close(); //關閉檔案輸入流

return e001;

}/**

* 查詢:號碼資訊查詢。

*/ret_errorcode querynumber(const number& number, number numbers, int& count)

if (number.price == 0)

; else

if (number.time == 0)

; else

if (number.status == 0)

; else

if (number.brand[0] == 0)

; else

for (i = 0,it=num.begin(); i < numsize && j< count; i++,it++)

if (tem[i] == 0)

numbers[j++] = it->second;

count = j;

delete tem;

return e001;

}/**

* 隨機選號:根據品牌,隨機選取未被預定的號碼,供客戶選擇

*/ret_errorcode randompick(const char* brand, const int randnumber, number number, int& count)

/** * 自助選號:根據選號表示式,返回滿足條件的未被預定的號碼列表

*/ret_errorcode selfservicepick(const char* brand, const char* expression1, const char* expression2, number number, int& count)

if (expression2[0] == 0)

; else }

for (k = 0,i = 0; i < count; i++)

if (t[i].id[0] == 0)

number[k++] = t[i];

count = k;

delete t;

return e001;

}/**

* 鎖定:根據號碼資訊,對號碼資源進行鎖定(預定)。

*/ret_errorcode locknumber(const number& number)

/** * 解鎖:根據時間對預定號碼到期時間未處理的號碼資源進行解鎖,供其他客戶選擇。

*/ret_errorcode unlocknumber()

return e001;

}void selfserviceterminal_testcase()

}

word之常用功能

0 word區域 標題欄 快速訪問工具欄 功能區 功能按鈕 導航視窗 編輯區 水平垂直滑動條 狀態列 1 更改office主題。檔案 帳戶 office主題。傳統白色 淺灰色 深灰色 2 高版本word文件另存為低版本文件。檔案 另存為 選擇檔案存放路徑 選擇檔案儲存型別 word 97 2003 ...

nodejs之koa常用功能

const koa require koa const static require koa static new koa const path require path koa static 搭建靜態資源伺服器 use static path.join dirname,static listen ...

MyBatisPlus常用功能之簡介

恢復內容開始 功能一 id生成策略。功能二 自動填充功能 比如有些當前系統時間 自動填充的實現 實現乙個介面,實現其方法,設定要自動填充的字段。功能三 樂觀鎖,在記錄後面加上版本號與資料庫版本號進行對比。修改是會修改資料庫版本號。主要用於解決丟失更新問題。樂觀鎖的實現過程 新增乙個配置類 基於shp...