0

現在、C++ の学校の課題に取り組んでおり、3 つのオブジェクト タイプがあります。顧客、レンタル、ツアー。お客様はツアーとレンタルを好まれています。ユーザーが選択したデータ構造タイプに基づいて、Array、Vector、Map、および List を使用してこの情報を保持する必要があります。数千のレコードを含むデータ ファイルがあり、アプリケーションはそれらを読み取り、必要なオブジェクトを作成します。たとえば、ユーザーがベクターを選択すると、上記のオブジェクトを含む 3 つのベクターが作成されます。次に、それらに対して次の操作が実行されます。

  • 私たちが提供した大規模なデータセットを読み込みます。使用しているデータ構造がソートをサポートしている場合は、説明でソートする必要があります。
  • 年末までに行われるツアーを予約した顧客のリストを作成する
  • 2000 ドル以上の債務を負っている顧客が予約したツアーのリストを作成し、支払い期日順に並べ替えます。
  • 郵便番号が 5 で始まる顧客の採用リストを準備する

メインのアプリケーション ヘッダー ファイルには次のようなものがあります。

プライベート:

string structureType;

Customer** customerListArray;
Tour** tourListArray;
EquipmentHire** equipmentsListArray;

vector<Customer *> customerListVector;
vector<Tour *> tourListVector;
vector<EquipmentHire *> equipmentsListVector;

std::map<string, Customer*> customerListMap;
std::map<string, Tour*> tourListMap;
std::map<string, EquipmentHire*> equipmentsListMap;

list<Customer *> customerListList;
list<Tour *> tourListList;
list<EquipmentHire *> equipmentsListList;

次に、ユーザーの選択に基づいて、それらのオブジェクトにデータをロードします。ただし、私の質問は、上記の操作を実行するためにデータ構造のタイプごとに異なる関数を作成する必要がありますか、またはそれらすべてで使用できる共通のインターフェイスがありますか?

私の C++ の知識は非常に限られており、要件は C++98 を使用することです。

ありがとうございました。

4

1 に答える 1

1

共通インターフェースは「STLコンテナ」です。これは C++ で定義された強力なインターフェイスではありませんが、すべての STL コンテナーに依存して実装できる概念です。したがって、テンプレートを使用して、それらすべてに適用されるコードを 1 回記述することができます。

(マップとベクターは、マップがstd::pair<>要素タイプとして持っているという点で異なることに注意してください。実際には、これは、検索関数に「アイデンティティ」セレクターと「マップ」セレクターを提供することで回避できます。)

于 2013-10-10T22:09:27.877 に答える