0
ハッシュ技術を使用してC++で電話帳プロジェクトを作成したいのですが、私がする必要があるのはlocation.soに基づいて連絡先を検索する必要がありますキー値としての場所が同じ場所に複数の連絡先があります。同じキー(場所)の下に複数の値(名前、電話番号)を格納する方法。複数の値を同じキーの下でC++でハッシングを使って保存する方法
ハッシュ技術を使用してC++で電話帳プロジェクトを作成したいのですが、私がする必要があるのはlocation.soに基づいて連絡先を検索する必要がありますキー値としての場所が同じ場所に複数の連絡先があります。同じキー(場所)の下に複数の値(名前、電話番号)を格納する方法。複数の値を同じキーの下でC++でハッシングを使って保存する方法
C++ 11以上を使用している場合は、std::unordered_multimap
を使用して、キーごとに複数のエントリ(場所ごとに複数のエントリなど)を保存できます。これは、同じキーを持つ複数のエントリを許可するハッシュマップです。エントリごとに複数のプロパティを格納するには、構造体またはクラスを使用できます。最後に、次のようになります。
struct contact_t {
std::string name;
std::string phone_number;
}
std::unordered_multimap<std::string, contact_t> directory;
int main(int argc, char *argv[])
{
// Add entry
contact_t contact;
contact.name = "Fooman";
contact.phone_number = "00 000 00000000";
directory.emplace("Barcity", contact);
// List all entries of one city
auto range = directory.equal_range("Barcity");
for (auto it = range.first; it != range.second; ++it) {
auto &entry = it->second; // it->first would be the key/location
std::cout << "Name: " << entry.name
<< "Phone: " << entry.phone_number << std::endl;
}
}
ただし、同じキーの値はソートされていないとみなします。代わりにstd::unordered_map<std::string, std::multiset<contact_t>>
のようなものを使用することができます。
'std :: unordered_multimap'を使用してください。 –
@DannyuNDosはハッシュ技術の一部ですか? –
これは、同じキーを持つ複数の要素を格納できるハッシュテーブルです。 –