From cppreference.com

iterator find ( const Key & key ) ; (1) const_iterator find ( const Key & key ) const ; (2) template < class K > iterator find ( const K & x ) ; (3) (since C++14) template < class K > const_iterator find ( const K & x ) const ; (4) (since C++14)

1,2) Finds an element with key equivalent to key .

3,4) Finds an element with key that compares equivalent to the value x . This overload only participates in overload resolution if the qualified-id Compare :: is_transparent is valid and denotes a type. It allows calling this function without constructing an instance of Key

edit] Parameters

key - key value of the element to search for x - a value of any type that can be transparently compared with a key

edit] Return value

Iterator to an element with key equivalent to key . If no such element is found, past-the-end (see end()) iterator is returned.

edit] Complexity

Logarithmic in the size of the container.

edit] Example

Run this code #include <iostream> #include <map> struct FatKey { int x ; int data [ 1000 ] ; } ; struct LightKey { int x ; } ; 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:: map < int , char > example = { { 1 , 'a' } , { 2 , 'b' } } ; auto search = example. find ( 2 ) ; if ( search ! = example. end ( ) ) { std:: cout << "Found " << search - > first << " " << search - > second << '

' ; } else { std:: cout << "Not found

" ; } // transparent comparison demo std:: map < FatKey, char , std:: less <>> example2 = { { { 1 , { } } , 'a' } , { { 2 , { } } , 'b' } } ; LightKey lk = { 2 } ; auto search2 = example2. find ( lk ) ; if ( search2 ! = example2. end ( ) ) { std:: cout << "Found " << search2 - > first. x << " " << search2 - > second << '

' ; } else { std:: cout << "Not found

" ; } } Output: Found 2 b Found 2 b

edit] See also