std::unordered_set::insert()
は戻り値として std:pair<iterator, bool>
を返します。この .second
部 (bool
) は、コンテナへのキーの追加に成功した(コンテナに同じキーが存在しなかった)場合に true
, 追加に失敗した(コンテナに同じキーが既に存在した)場合に false
を返します。
#include <iostream>
#include <string>
#include <unordered_set>
int main()
{
// N 日間にわたる申請
int N;
std::cin >> N;
// 登録済みのユーザ名を記録するハッシュテーブル
std::unordered_set<std::string> ids;
for (int i = 1; i <= N; ++i) // i 日目
{
// 申請されたユーザ名
std::string id;
std::cin >> id;
if (ids.insert(id).second) // ユーザ名を新規登録できた場合
{
// 日にちを出力
std::cout << i << '\n';
}
}
}