insert_range.pass.cpp revision 061d0cc4db18d17bf01ed14c5db0be098205bd47
1032091d7f62774443c282915964189ea3d8930dePatrick Jenkins//===----------------------------------------------------------------------===//
2032091d7f62774443c282915964189ea3d8930dePatrick Jenkins//
3032091d7f62774443c282915964189ea3d8930dePatrick Jenkins//                     The LLVM Compiler Infrastructure
4032091d7f62774443c282915964189ea3d8930dePatrick Jenkins//
521c62da287237d39d0d95004881ea4baae3be6daChris Lattner// This file is dual licensed under the MIT and the University of Illinois Open
621c62da287237d39d0d95004881ea4baae3be6daChris Lattner// Source Licenses. See LICENSE.TXT for details.
7032091d7f62774443c282915964189ea3d8930dePatrick Jenkins//
8032091d7f62774443c282915964189ea3d8930dePatrick Jenkins//===----------------------------------------------------------------------===//
9032091d7f62774443c282915964189ea3d8930dePatrick Jenkins
10032091d7f62774443c282915964189ea3d8930dePatrick Jenkins// <unordered_map>
11032091d7f62774443c282915964189ea3d8930dePatrick Jenkins
12032091d7f62774443c282915964189ea3d8930dePatrick Jenkins// template <class Key, class T, class Hash = hash<Key>, class Pred = equal_to<Key>,
13032091d7f62774443c282915964189ea3d8930dePatrick Jenkins//           class Alloc = allocator<pair<const Key, T>>>
14032091d7f62774443c282915964189ea3d8930dePatrick Jenkins// class unordered_map
15032091d7f62774443c282915964189ea3d8930dePatrick Jenkins
167f27570ae0cb716927f946f4e73a55f60d99b3e2Chris Lattner// template <class InputIterator>
17032091d7f62774443c282915964189ea3d8930dePatrick Jenkins//     void insert(InputIterator first, InputIterator last);
18032091d7f62774443c282915964189ea3d8930dePatrick Jenkins
197f27570ae0cb716927f946f4e73a55f60d99b3e2Chris Lattner#include <unordered_map>
20032091d7f62774443c282915964189ea3d8930dePatrick Jenkins#include <string>
21032091d7f62774443c282915964189ea3d8930dePatrick Jenkins#include <cassert>
22032091d7f62774443c282915964189ea3d8930dePatrick Jenkins
23032091d7f62774443c282915964189ea3d8930dePatrick Jenkins#include "test_iterators.h"
24032091d7f62774443c282915964189ea3d8930dePatrick Jenkins#include "min_allocator.h"
25032091d7f62774443c282915964189ea3d8930dePatrick Jenkins
26032091d7f62774443c282915964189ea3d8930dePatrick Jenkinsint main()
27032091d7f62774443c282915964189ea3d8930dePatrick Jenkins{
28032091d7f62774443c282915964189ea3d8930dePatrick Jenkins    {
29032091d7f62774443c282915964189ea3d8930dePatrick Jenkins        typedef std::unordered_map<int, std::string> C;
30032091d7f62774443c282915964189ea3d8930dePatrick Jenkins        typedef std::pair<int, std::string> P;
317f27570ae0cb716927f946f4e73a55f60d99b3e2Chris Lattner        P a[] =
321d1ef14248a24cb7239e0bc9298d84004a8044e6Nick Lewycky        {
33ac95cc79ac0b899d566cc29c0f646f39c2fa35c0Dan Gohman            P(1, "one"),
34032091d7f62774443c282915964189ea3d8930dePatrick Jenkins            P(2, "two"),
35032091d7f62774443c282915964189ea3d8930dePatrick Jenkins            P(3, "three"),
36032091d7f62774443c282915964189ea3d8930dePatrick Jenkins            P(4, "four"),
377f27570ae0cb716927f946f4e73a55f60d99b3e2Chris Lattner            P(1, "four"),
38ac95cc79ac0b899d566cc29c0f646f39c2fa35c0Dan Gohman            P(2, "four"),
39032091d7f62774443c282915964189ea3d8930dePatrick Jenkins        };
40ac95cc79ac0b899d566cc29c0f646f39c2fa35c0Dan Gohman        C c;
417f27570ae0cb716927f946f4e73a55f60d99b3e2Chris Lattner        c.insert(input_iterator<P*>(a), input_iterator<P*>(a + sizeof(a)/sizeof(a[0])));
427f27570ae0cb716927f946f4e73a55f60d99b3e2Chris Lattner        assert(c.size() == 4);
43032091d7f62774443c282915964189ea3d8930dePatrick Jenkins        assert(c.at(1) == "one");
44032091d7f62774443c282915964189ea3d8930dePatrick Jenkins        assert(c.at(2) == "two");
45032091d7f62774443c282915964189ea3d8930dePatrick Jenkins        assert(c.at(3) == "three");
461d1ef14248a24cb7239e0bc9298d84004a8044e6Nick Lewycky        assert(c.at(4) == "four");
477f27570ae0cb716927f946f4e73a55f60d99b3e2Chris Lattner    }
487f27570ae0cb716927f946f4e73a55f60d99b3e2Chris Lattner#if __cplusplus >= 201103L
49032091d7f62774443c282915964189ea3d8930dePatrick Jenkins    {
50032091d7f62774443c282915964189ea3d8930dePatrick Jenkins        typedef std::unordered_map<int, std::string, std::hash<int>, std::equal_to<int>,
51032091d7f62774443c282915964189ea3d8930dePatrick Jenkins                            min_allocator<std::pair<const int, std::string>>> C;
521d1ef14248a24cb7239e0bc9298d84004a8044e6Nick Lewycky        typedef std::pair<int, std::string> P;
53032091d7f62774443c282915964189ea3d8930dePatrick Jenkins        P a[] =
54032091d7f62774443c282915964189ea3d8930dePatrick Jenkins        {
55032091d7f62774443c282915964189ea3d8930dePatrick Jenkins            P(1, "one"),
56032091d7f62774443c282915964189ea3d8930dePatrick Jenkins            P(2, "two"),
57ac95cc79ac0b899d566cc29c0f646f39c2fa35c0Dan Gohman            P(3, "three"),
581d1ef14248a24cb7239e0bc9298d84004a8044e6Nick Lewycky            P(4, "four"),
59ac95cc79ac0b899d566cc29c0f646f39c2fa35c0Dan Gohman            P(1, "four"),
60032091d7f62774443c282915964189ea3d8930dePatrick Jenkins            P(2, "four"),
617f27570ae0cb716927f946f4e73a55f60d99b3e2Chris Lattner        };
62032091d7f62774443c282915964189ea3d8930dePatrick Jenkins        C c;
631d1ef14248a24cb7239e0bc9298d84004a8044e6Nick Lewycky        c.insert(input_iterator<P*>(a), input_iterator<P*>(a + sizeof(a)/sizeof(a[0])));
64ac95cc79ac0b899d566cc29c0f646f39c2fa35c0Dan Gohman        assert(c.size() == 4);
65ac95cc79ac0b899d566cc29c0f646f39c2fa35c0Dan Gohman        assert(c.at(1) == "one");
66032091d7f62774443c282915964189ea3d8930dePatrick Jenkins        assert(c.at(2) == "two");
67032091d7f62774443c282915964189ea3d8930dePatrick Jenkins        assert(c.at(3) == "three");
687f27570ae0cb716927f946f4e73a55f60d99b3e2Chris Lattner        assert(c.at(4) == "four");
69ac95cc79ac0b899d566cc29c0f646f39c2fa35c0Dan Gohman    }
70032091d7f62774443c282915964189ea3d8930dePatrick Jenkins#endif
711d1ef14248a24cb7239e0bc9298d84004a8044e6Nick Lewycky}
72032091d7f62774443c282915964189ea3d8930dePatrick Jenkins