2つのファイルを読み込もうとしていますが、file 1とfile 2に入力された時間を取得して、すべての時間を含むリストに配置するのに苦労していますが、時間がすでに入力されている場合、二度と入りません。
これは宿題ではありません。私は自分でアプリケーションプロジェクトに取り組んでいます。
--コレクション内の各ファイルを取得し、マップに配置された時間をロードして時間のみのリストを作成する時間リストを作成していますが、どこから始めればよいかわかりません。それが理にかなっている場合は?
2つのファイルを読み込もうとしていますが、file 1とfile 2に入力された時間を取得して、すべての時間を含むリストに配置するのに苦労していますが、時間がすでに入力されている場合、二度と入りません。
これは宿題ではありません。私は自分でアプリケーションプロジェクトに取り組んでいます。
--コレクション内の各ファイルを取得し、マップに配置された時間をロードして時間のみのリストを作成する時間リストを作成していますが、どこから始めればよいかわかりません。それが理にかなっている場合は?
ファイルを読み取り、読み取った時間を挿入し、挿入する(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
std::list<time>
時間値がファイルでソートされている場合は、タスクに使用する方がよい場合があります。file1 と file2 から値をソートされた順序で別のリストに読み取り、この順序でlist::merge
andを使用します。list::unique
これは、格納する値の順序を保持するstd::set
ことも保持しないためです。std::map
list::push_back、list::merge、およびlist::uniqueを使用する必要があり、各ドキュメント ページには例が含まれています。