---
name: "hash"
section: "3bobcat"
platform: "linux"
package: "libbobcat-dev"
version: "6.07.01-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/hash/3bobcat"
---

# hash(3bobcat)

Various mapping template classes using hashing

## NAME

FBB::Hash - Various mapping template classes using hashing

## SYNOPSIS

**#include \<bobcat/hash\>**\

## DESCRIPTION

The **FBB:Hash** group of template classes offer hashing-based mapping. Various variants are available, all based on the facilities offered by the **unordered\_map**.

The hash-map offered in the **unordered\_map** container has a fairly complex construction interface, and *Hash* is an attempt to simplify this part of its interface. In practice, hashing uses a textual key, which may be **std::string** or *char \** based, and the keys may be used either case sensitively or case insensitively. *Hash* merely requires its users to specify the map’s value type, while the key may be a *char const \** or *std::string*, used case sensitively or case insensitively.

## NAMESPACE

**FBB**\
 All constructors, members, operators and manipulators, mentioned in this man-page, are defined in the namespace **FBB**.

## INHERITS FROM

**std::unordered\_map**, using various instantiations.

## TYPE

All variants define *value\_type* as the corresponding *unordered\_map* *value\_type*. In practice a *value\_type* defines a *std::pair\<Key, Value\>*, where *Key* represents the hash’s key-type and *Value* represents the hash’s value type.

## CONSTRUCTORS

Variants of the *FBB::Hash* container are available for *char const \** or *std::string* keys, used case sensitively or case insensitively.

All variants support default and move construction (as well as move assignment), support construction from initializer lists. and support construction from iterators defining a half-open range of *value\_type* values.

The following variants are available (showing their default constructors). *Value* refers to the value type stored in the hash table.

- o

  **HashCharPtr\<Value\>()**:\
   this hash table uses *case sensitive* **char** **const \*** keys;

-

  - o

  **HashCharCasePtr\<Value\>()**:\
   this hash table uses *case insensitive* **char const \*** keys;

-

  - o

  **HashString\<Value\>()**:\
   this hash table uses *case sensitive* **std::string** keys;

-

  - o

  **HashStringCase\<Value\>()**:\
   this hash table uses *case insensitive* **std::string** keys;

## OVERLOADED OPERATOR

In addition to the index operator inherited from *unordered\_map* the overloaded copy and move assignment operators are available for all *Hash* containers.

## MEMBER FUNCTIONS

All members of the *unordered\_map* container are available, as *Hash* inherits from this template class.

## EXAMPLE

```
    #include <iostream>
    #include <bobcat/hash>
    using namespace std;
    using namespace FBB;
    pair<char const *, size_t> ap[] =
    {
        pair<char const *, size_t>("one", 1),
        pair<char const *, size_t>("two", 2),
    };
    int main()
    {
        HashCharPtr<size_t> hcp;
        HashCharPtr<size_t> hcp2(ap, ap + 2);
        HashCharPtr<size_t> hcp3(hcp2);
        hcp = hcp2;
        cout << hcp2["one"] << endl;
    }
```

## FILES

*bobcat/hash* - defines the class interface

## SEE ALSO

[**bobcat**(7)](/bobcat/7.md)

## BUGS

None Reported.

## BOBCAT PROJECT FILES

- o

  *https://fbb-git.gitlab.io/bobcat/*: gitlab project page;

Debian Bobcat project files:

- o

  *libbobcat6*: debian package containing the shared library, changelog and copyright note;

- o

  *libbobcat-dev*: debian package containing the static library, headers, manual pages, and developer info;

## BOBCAT

Bobcat is an acronym of \`Brokken’s Own Base Classes And Templates’.

## COPYRIGHT

This is free software, distributed under the terms of the GNU General Public License (GPL).

## AUTHOR

Frank B. Brokken (**f.b.brokken@rug.nl**).
