2014-01-12 7 views
5

私は「Accelerated C++」を使って作業しています。問題5-3に関する質問があります。それは尋ねる:正確にドライバ機能は何ですか?

5-3. By using a typedef, we can write one version of the program that implements either a 
vector-based solution or a list-based one. Write and test this version of the program.' 

次の質問を尋ねる:

5-4. Look again at the driver functions you wrote in the previous exercise. Note that 
it is possible to write a driver that differs only in the declaration of the type for the data structure 
that holds the input file. If your vector and list test drivers differ in any other way, rewrite them 
so that they differ only in this declaration. 

正確にドライバの機能は何ですか?私はそうのように異なるデータ型を扱うためにif文だけでなく、オーバーロードされた関数を作成することにより、5-3を解決してきました:私は、異なるデータ型を扱うために、オーバーロードのもの以外の余分な機能を作成していない

cout << "Please enter 1 if you would like to use vectors, or 2 if you would like to use lists: "<< endl; 
int choose; 
cin >> choose; 
//CHOOSING TO USE VECTORS 
if (choose == 1){....vector<Student_info> allStudents; 
       vector<Student_info> fail;.......} 

//CHOOSING TO USE LISTS 
else if (choose==2) {....list<Student_info> allStudents; 
        list<Student_info> fail;....} 

//INVALID CHOICE 
else {...invalid number, try again...} 

。これらのドライバ機能はありますか?もしそうでなければ、私は問題を間違っていなければならない。誰かが光を当てることができるだろうか? :

+1

この2005年のスレッドを読むことができます。 http://bytes.com/topic/c/answers/167496-accelerated-c-clarification-wording-exercises – KeithSmith

+2

ドライバ機能はおそらく、問題を解決するライブラリスタイルのコードの動作を示すために書かれた関数です。たとえば、クラスAを作成すると、ドライバ関数はクラスAが期待どおりに動作することを示すためにコード内にある関数になります。したがって、最初のドライバ関数は 'main'自身であり、' main'から呼び出された 'A'クラスのクライアントである他の関数です。 – LavaScornedOven

+0

非常に推薦される本のために、執筆はしばしば漫画的に凶悪です。彼らは実際に特定の質問で尋ねているものを解析しようとしているインターネット上の複数のスレッドがあります。私は質問を文字通り書き直して、インターネット検索なしで理解できるように誘惑されました。 (はい、皮肉なことです)C++の教育法の状態が否定できない欠点があるにもかかわらずトップリストにある場合は、これがどうやら残念ですか? – neuronet

答えて

3

にかかわらず、彼らはlistvectorであるかどうかのallStudentsfailで動作するコードはどのように似ていますか?あなたが割り当てを正しく行っていれば、違いはほとんどないでしょう。あなたがそのコードを取り出して、listvectorへの参照を削除して、代わりにまたはtypedef list<Student_info> mytypeのいずれかを作成するmytypeで動作させると、「ドライバ機能」と呼ばれるものがあります。それはあなたがインターネット参照を見つけることになる正式な名前ではありません。彼らは答えを得るためにlistvectorの操作を実行するコードを記述していました。

+0

2つのコードブロックはtypedefのほかに同じです!私が次のようなことをした場合: 'if(choose == 1){ typedef vector mytype; } else if(choose == 2){ typedef list mytype; } else { cout << "無効な番号" << endl; main(); return 0; } .... mytype ..... ' if文はドライバ関数と見なされますか? – zzz2991

+2

@DavidJhoo質問の具体的な目標は、あなたがそれを*関数*に分割することだと思います(異なる型を得るために 'typedef'を使って別々のコンパイルが必要な場合があります)。 * templates *を紹介し、どのようにして "マルチタイプのドライバ機能"を持つことができるかを示します(問題の厄介な言葉を使うために) –

+0

Ok。それは理にかなっている。私は、関数を使用して参照することによって、 'mytype'の' typedef'を定義する方法を考えようとしてきました。しかし、私はこれをどうやって行うのか正確には分かりません。 typedefを返すにはどうすればいいですか?typedefを割り当てることができるオブジェクトを参照しますか?それとも間違ったアプローチですか? – zzz2991

1

この特定のケースでは、ドライバコードはというテストコードというより曖昧な方法です。

つまり、5-3で書いたコードを検証するために使用したテスト(別名ドライバ)コードを見てみることをお勧めします。あなたの2つのifブロック内

関連する問題