brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.6 KiB · ef47d84 Raw
67 lines · cpp
1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9// <map>10 11// class multimap12 13// iterator insert(const_iterator position, const value_type& v);14 15#include <map>16#include <cassert>17 18#include "test_macros.h"19#include "min_allocator.h"20 21template <class Container>22void do_insert_hint_test() {23  typedef Container M;24  typedef typename M::iterator R;25  typedef typename M::value_type VT;26  M m;27  const VT v1(2, 2.5);28  R r = m.insert(m.end(), v1);29  assert(r == m.begin());30  assert(m.size() == 1);31  assert(r->first == 2);32  assert(r->second == 2.5);33 34  const VT v2(1, 1.5);35  r = m.insert(m.end(), v2);36  assert(r == m.begin());37  assert(m.size() == 2);38  assert(r->first == 1);39  assert(r->second == 1.5);40 41  const VT v3(3, 3.5);42  r = m.insert(m.end(), v3);43  assert(r == std::prev(m.end()));44  assert(m.size() == 3);45  assert(r->first == 3);46  assert(r->second == 3.5);47 48  const VT v4(3, 4.5);49  r = m.insert(std::prev(m.end()), v4);50  assert(r == std::prev(m.end(), 2));51  assert(m.size() == 4);52  assert(r->first == 3);53  assert(r->second == 4.5);54}55 56int main(int, char**) {57  do_insert_hint_test<std::multimap<int, double> >();58#if TEST_STD_VER >= 1159  {60    typedef std::multimap<int, double, std::less<int>, min_allocator<std::pair<const int, double>>> M;61    do_insert_hint_test<M>();62  }63#endif64 65  return 0;66}67