Home | History | Annotate | Download | only in unord.multimap
      1 //===----------------------------------------------------------------------===//
      2 //
      3 //                     The LLVM Compiler Infrastructure
      4 //
      5 // This file is dual licensed under the MIT and the University of Illinois Open
      6 // Source Licenses. See LICENSE.TXT for details.
      7 //
      8 //===----------------------------------------------------------------------===//
      9 
     10 // <unordered_map>
     11 
     12 // template <class Key, class T, class Hash = hash<Key>, class Pred = equal_to<Key>,
     13 //           class Alloc = allocator<pair<const Key, T>>>
     14 // class unordered_multimap
     15 
     16 // pair<const_iterator, const_iterator> equal_range(const key_type& k) const;
     17 
     18 #include <unordered_map>
     19 #include <string>
     20 #include <cassert>
     21 
     22 int main()
     23 {
     24     {
     25         typedef std::unordered_multimap<int, std::string> C;
     26         typedef C::const_iterator I;
     27         typedef std::pair<int, std::string> P;
     28         P a[] =
     29         {
     30             P(10, "ten"),
     31             P(20, "twenty"),
     32             P(30, "thirty"),
     33             P(40, "fourty"),
     34             P(50, "fifty"),
     35             P(50, "fiftyA"),
     36             P(50, "fiftyB"),
     37             P(60, "sixty"),
     38             P(70, "seventy"),
     39             P(80, "eighty"),
     40         };
     41         const C c(std::begin(a), std::end(a));
     42         std::pair<I, I> r = c.equal_range(30);
     43         assert(std::distance(r.first, r.second) == 1);
     44         assert(r.first->first == 30);
     45         assert(r.first->second == "thirty");
     46         r = c.equal_range(5);
     47         assert(std::distance(r.first, r.second) == 0);
     48         r = c.equal_range(50);
     49         assert(r.first->first == 50);
     50         assert(r.first->second == "fifty");
     51         ++r.first;
     52         assert(r.first->first == 50);
     53         assert(r.first->second == "fiftyA");
     54         ++r.first;
     55         assert(r.first->first == 50);
     56         assert(r.first->second == "fiftyB");
     57     }
     58 }
     59