-2

2つのファイルを読み込もうとしていますが、file 1file 2に入力された時間を取得して、すべての時間を含むリストに配置するのに苦労していますが、時間がすでに入力されている場合、二度と入りません。

これは宿題ではありません。私は自分でアプリケーションプロジェクトに取り組んでいます。

--コレクション内の各ファイルを取得し、マップに配置された時間をロードして時間のみのリストを作成する時間リストを作成していますが、どこから始めればよいかわかりません。それが理にかなっている場合は?

4

2 に答える 2

1

ファイルを読み取り、読み取った時間を挿入し、挿入する(un)ordered_mapエントリが既に追加されている場合は、次の反復にスキップします。

#include <unordered_map>

std::unordered_map<std::string, VALUE_TYPE> hash;
while (read line) {

    std::string date(extract_date(line));
    auto it(hash.insert(std::make_pair(date, VALUE_TYPE())));

    // If you want to check whether the last value has been inserted
    if (it.second) {
        // do something with the pair it.first
    }

}

説明:

ではmap、順序付けられているかどうかに関係なく、値をマッピングしているため、 type の値ごとに、 typeAの値を保存しますB

この場合、VALUE_TYPE各日付の値を保存する必要がある場合は、単に時間文字列を取得してキーと見なすことができます。キーがマッピング コンテナーに既に追加されている場合は、再度挿入されることはありません。 -VALUE_TYPEコンテナに保持される値は初期値になります。

std::map<int, int> map;
map.insert(std::make_pair(1, 1));
map.insert(std::make_pair(2, 1));
map.insert(std::make_pair(1, 2));
map.insert(std::make_pair(2, 2));

for (auto it(map.begin()); it != map.end(); ++it) {
    std::cout << it->first << " " << it->second << std::endl;
}

出力:

1 1
2 1
于 2013-04-17T11:52:19.517 に答える
0

std::list<time>時間値がファイルでソートされている場合は、タスクに使用する方がよい場合があります。file1 と file2 から値をソートされた順序で別のリストに読み取り、この順序でlist::mergeandを使用します。list::uniqueこれは、格納する値の順序を保持するstd::setことも保持しないためです。std::map

list::push_backlist::merge、およびlist::uniqueを使用する必要があり、各ドキュメント ページには例が含まれています。

于 2013-04-17T11:54:10.193 に答える