我試圖加載兩個文件,但我很難花時間輸入文件1和文件2,並將它們放入一個有所有時間的列表中,但是如果時間已經輸入,則不會再次輸入它。從一個文件和另一個單獨的文件中獲取時間,並將兩個文件的時間值放入一個列表中C++
這不是作業。我只是自己開發一個應用程序項目。
- 我建立一個時間列表,將集合中的每個文件都放入一個集合中,然後加載已放入地圖的時間,以便只有一個列表,但我不知道從哪裏開始。如果這是有道理的?
我試圖加載兩個文件,但我很難花時間輸入文件1和文件2,並將它們放入一個有所有時間的列表中,但是如果時間已經輸入,則不會再次輸入它。從一個文件和另一個單獨的文件中獲取時間,並將兩個文件的時間值放入一個列表中C++
這不是作業。我只是自己開發一個應用程序項目。
- 我建立一個時間列表,將集合中的每個文件都放入一個集合中,然後加載已放入地圖的時間,以便只有一個列表,但我不知道從哪裏開始。如果這是有道理的?
只需讀取文件,在(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
,有序與否,你映射值,因此,爲A
類型的每一個值,你可以節省B
類型的一些價值。
在這種情況下,一旦您必須爲每個日期保存一些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
和list::unique
。這是因爲std::set
或std::map
都不保留它們存儲的值的順序。
您將需要使用list::push_back,list::merge和list::unique,並且每個文檔頁面都包含一個示例。
在file1和file2中顯示示例時間 – Vijay
您使用的是哪個列表類? – user93353
聽起來就像你可以使用'std :: set'這樣我可以給你一個通用的答案,但是如果你有一些代碼顯示你正在使用的類型以及你如何使用它,這將有所幫助。 –