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