2010-11-22 8 views
0

main()がファイル(いくつかの定義済みの命令を含む)を読み込み、各行にクラスを作成し、クラスオブジェクトがすでに作成されている場合は、新しいクラスオブジェクトを作成するプログラムを書く必要があります。クラスオブジェクトはC++

main() 
{ 
    read file; 
    save to a vector; 

    for(i < vectorsize; i++) 
      if(vector[i]== "book") 
       if(book b was already created) 
         book c; 
       else book b; 
} 
+0

あなたは[あなたの良い入門C++帳]を実行する方法について(http://stackoverflow.com/questions/388242/the-definitive-c++-book-guide-and-list)の章を読みましたI/O? –

+0

'book b'と' book c'の違いは何ですか?ファイルの内容に基づいて 'book'インスタンスを100個作る必要がある場合はどうなりますか?これは非常にうまくスケールされませんし、コンテナにオブジェクトを追加したいと思うかもしれません(例えば、 'std :: vector'など)。 – birryree

+0

@biyyyree:それは私が心に持っていたものです。しかし、私はbookonを最新版にしたいのですが、どうすれば100冊のbooknamesのベクトルからそれを見つけることができますか? –

答えて

1

作成した書籍を保存するのにstd::mapを使用することがあります。マップは、独自の定義されたキーでコンテンツを扱うことができる、キー値ストアです。

typedef std::map<std::string, Book> BookMap; 
int main() 
{ 
    read file; 
    save to a vector; 
    BookMap books; 

    for(i < vectorsize; i++) 
      if(vector[i]== "book") 
       BookMap::const_iterator alreadyCreatedBook(books.find(b.name)); 
        // When there is no book in the map, the map returns it's end() element 
       if(books.end() != createdBook) 
         alreadyCreatedBook->second; 
       else 
        books[b.name] = b; 
} 
1

のではなく、あなたが本の名前がキーと実際の簿価こともできstd::mapを見てみたい場合がありますvectorを持つようなもの。そうすれば、あなたはあなたが探している本を非常に簡単に見つけることができます。

+0

私はベクトルがファイルから読み込まれた命令をキャプチャしたことを意味していると考えています。この命令はその後順番に実行されるため、マップは必要ありません。なぜ彼らは彼らが読んでいるときに実行されていないのかわからないので、ストレージと繰り返しの必要性を避けてください:_ /?しかし、Rudiも指摘しているように、本自体は地図上に存在する可能性があります。 –

関連する問題