2011-02-23 15 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でマップを作る方法を見つけることができません。私はマップ<の文字列、Garage List [500]>ディレクトリのようなものを推測します。STLマップ構築

答えて

1

あなたは名前の配列を配列にしたいと思っていますか?その後、map<string, vector<Garage> >を使用できます。

2

あなたは近くです。あなたが探していることである:あなたのGarageListクラスでこれにより

map<string, Garage>; 

、あなたはマップはあなたのためにそれを管理し、エントリの数を心配する必要はありません。

ので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

+0

ガレージのこのリストがあなたにとってどれほど重要なのか私には分かりませんので、私の答えを編集してガレージを見つけてガレージを見つけることで、このクラスをもう少し書きましょう。 – Lou

関連する問題