1. 程式人生 > 其它 >員工分組案例分析(STL)

員工分組案例分析(STL)

專案需求:

主函式框架以及思路:

測試程式碼已註釋,整體思路為:

一、將資料放入容器

第一步:建立容器(容器選擇,多用vector),存放資料(資料型別是什麼,多為自定義類)

第二步:對容器中的多個物件進行初始化(注意不在第一步的建構函式裡面初始化),具體過程為通過for迴圈建立相應數量物件,遍歷所有物件,對物件中的屬性進行初始化(nameSeed的使用,rand的使用技巧),然後將每一個初始化的類的物件壓入容器vector

第三步:測試,遍歷檢視容器的資料

二、處理資料

第一步:建立容器(該容器用於存放處理後的資料,與前面不同),存放的資料型別根據需求確定

第二步:對資料進行處理,需要用到前面的兩個容器(具體操作為兩個容器引用作為形參),同樣的是通過for迴圈遍歷vector容器,並且對其中的資料進行處理然後插入到multimap容器(插入方式為對組)

第三步:測試,遍歷檢視multimap容器中的資料

三、按照相應的要求檢視multimap容器資料

此處的要求是對容器中的資料進行分組之後進行檢視

這裡採用迭代器遍歷每組的資料,迭代器的起始位置可以通過成員函式find確定,結束位置的話,可以通過每組資料個數count函式限定迭代器移動次數(移動次數不超過每組資料個數)

或者結束位置可以確定為下一組資料的起始位置

1 cout << "策劃部門:" << endl;
2     multimap<int, Worker>::iterator pos = m.find(CeHua);
3     int count = m.count(CeHua);
4 int index = 0; 5 for (;pos != m.end() && index < count;pos++, index++) 6 { 7 cout << "姓名: " << pos->second.m_Name << " 工資:" << pos->second.m_Salary << endl; 8 }

可以參考的點:

1、通過巨集定義使得意義更加明確

 1#define CeHua 0 2 #define MeiShu 1 3 #define

YanFa 2 

 2、使用nameseed使得屬性初始化簡便高階

1 string nameSeed = "ABCDEFGHIJ";
2     for (int i = 0;i < 10;i++)
3     {
4         Worker worker;
5         worker.m_Name = "員工";
6         worker.m_Name += nameSeed[i];

 3、使用隨機數初始化屬性更加簡便,配合隨機數種子

 1 srand((unsigned int)time(NULL));

2 worker.m_Salary = rand() % 10000 + 10000;//10000~19999