2011-02-23 28 views
0
class Garage { 
    string WorkerFirstName; 
    string WorkerLastName; 
    string WorkerNumber; 
public: 
    Garage() 
    { 
     WorkerFirstName = ""; 
     WorkerLastName = ""; 
     WorkerNumber = ""; 
    } 

    void SetFirstName(string FirstName) { WorkerFirstName = FirstName;}  
    void SetLastName(string LastName) { WorkerLastName = LastName; } 
    void SetNumber(string Number) { WorkerNumber = Number; } 

    string GetFirstName() { return WorkerFirstName; } 
    string GetLastName() { return WorkerLastName; } 
    string GetNumber() { return WorkerNumber; }   
}; 

class GarageList { 
    Garage List[500];     
    int MaxSize; 
    int Size; 
public: 
    GarageList() 
    { 
     MaxSize = 500; 
    } 

    ... //list out functions 
}; 

这是我的设置的删节版本。我无法弄清楚如何根据姓氏和一个包含车库类的所有属性的参考ID制作地图。我想像地图<字符串,车库列表[500]>目录。STL地图制作

回答

1

你的意思是你想要一个名称映射到一个数组?那么你可以使用map<string, vector<Garage> >

2

你就近了。你所寻找的是:

map<string, Garage>; 

有了这个你GarageList类,您不必担心参赛人数,地图会处理这件事给你。

所以GarageList应该是这样的:

class GarageList { 
    map<string, Garage> garages_;     
public: 
    GarageList() 
    { 
    } 

    int Size() { 
     return garages_.size(); 
    } 

    void AddGarage(const Garage& garage) { 
     garages_[garage.GetLastName()] = garage; 
    } 

    // Return true if found, false otherwise 
    bool FindGarage(const string& lastName, Garage& foundGarage) { 
     if (garages_.find(lastName) != garages_.end()) { 
      foundGarage = garages_[lastName]; 
      return true; 
     } 
     return false; // garage not found with lastName 
    } 
      return 
    ... //list out functions 
}; 
+0

嗯,我得到了它的返回0,但是当我创建一个新的记录插入阵列它不会在地图中反映如此。我如何根据WorkerLastName制作地图的关键字? – atc 2011-02-23 06:12:03

+0

t对我来说不清楚这个车库列表对你来说有多重要,所以让我通过编辑我的答案(添加车库和找到车库)来写更多这个类。 – Lou 2011-02-23 14:29:52