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