Namespaces
Variants

std::flat_map<Key,T,Compare,KeyContainer,MappedContainer>:: find

From cppreference.net

iterator find ( const Key & key ) ;
(1) (depuis C++23)
(constexpr depuis C++26)
const_iterator find ( const Key & key ) const ;
(2) (depuis C++23)
(constexpr depuis C++26)
template < class K >
iterator find ( const K & x ) ;
(3) (depuis C++23)
(constexpr depuis C++26)
template < class K >
const_iterator find ( const K & x ) const ;
(4) (depuis C++23)
(constexpr depuis C++26)
1,2) Trouve un élément dont la clé est équivalente à key .
3,4) Trouve un élément dont la clé est équivalente à x .
Cette surcharge participe à la résolution de surcharge uniquement si Compare est transparent . Elle permet d'appeler cette fonction sans construire une instance de Key .

Table des matières

Paramètres

key - valeur clé de l'élément à rechercher
x - une valeur de type quelconque pouvant être comparée de manière transparente avec une clé

Valeur de retour

Un itérateur vers l'élément demandé. Si aucun élément correspondant n'est trouvé, un itérateur passé-la-fin (voir end() ) est retourné.

Complexité

Logarithmique par rapport à la taille du conteneur.

Exemple

#include <iostream>
#include <flat_map>
struct LightKey
{
    int x;
};
struct FatKey
{
    int x;
    int data[1000]; // a heavy blob
};
// As detailed above, the container must use std::less<> (or other transparent
// Comparator) to access these overloads. This includes standard overloads,
// such as comparison between std::string and std::string_view.
bool operator<(const FatKey& fk, const LightKey& lk) { return fk.x < lk.x; }
bool operator<(const LightKey& lk, const FatKey& fk) { return lk.x < fk.x; }
bool operator<(const FatKey& fk1, const FatKey& fk2) { return fk1.x < fk2.x; }
int main()
{
    // Simple comparison demo.
    std::flat_map<int, char> example{{1, 'a'}, {2, 'b'}};
    if (auto search = example.find(2); search != example.end())
        std::cout << "Found " << search->first << ' ' << search->second << '\n';
    else
        std::cout << "Not found\n";
    // Transparent comparison demo.
    std::flat_map<FatKey, char, std::less<>> example2{{{1, {}}, 'a'}, {{2, {}}, 'b'}};
    LightKey lk = {2};
    if (auto search = example2.find(lk); search != example2.end())
        std::cout << "Found " << search->first.x << ' ' << search->second << '\n';
    else
        std::cout << "Not found\n";
    // Obtaining const iterators.
    // Compiler decides whether to return iterator of (non) const type by way of
    // accessing map; to prevent intentional modification, one of the simplest
    // options is to access the map via a constant reference.
    const auto& example2ref = example2;
    if (auto search = example2ref.find(lk); search != example2.end())
    {
        std::cout << "Found " << search->first.x << ' ' << search->second << '\n';
    //  search->second = 'c'; // error: assignment of member
                              // 'std::pair<const FatKey, char>::second'
                              // in read-only object
    }
}

Sortie :

Found 2 b
Found 2 b
Found 2 b

Voir aussi

accéder à l'élément spécifié avec vérification des limites
(fonction membre publique)
accéder ou insérer l'élément spécifié
(fonction membre publique)
retourne le nombre d'éléments correspondant à une clé spécifique
(fonction membre publique)
retourne la plage d'éléments correspondant à une clé spécifique
(fonction membre publique)