मैं एक फ़ंक्शन लिख रहा हूं जिसमें से एक (std::map
, std::multimap
, std::unordered_map
या std::unordered_multimap
) प्राप्त करना चाहिए। मेरे कोड इस प्रकार है:किसी भी मानक मानचित्र को प्राप्त करने वाला फ़ंक्शन टेम्पलेट
template<template <class, class> class Map, typename Coord>
inline typename std::enable_if<std::is_arithmetic<Coord>::value>::type
filter(Map<Coord, Coord>& map, Coord step = 2) {
for (auto it = std::begin(map); it != std::end(map);) {
if (it->second - it->first <= step){
it = map.erase(it);
}
else
++it;
}
}
टेम्पलेट टेम्पलेट पैरामीटर Map
नक्शे के सभी प्रकार के लिए सामान्य नहीं है। std::map
और std::multimap
चार टेम्पलेट पैरामीटर प्राप्त करते हैं, और std::unordered_map
और std::unordered_multimap
पांच टेम्पलेट पैरामीटर प्राप्त करते हैं। इसका तात्पर्य है कि मैं टेम्पलेट टेम्पलेट पैरामीटर के साथ समस्या का समाधान नहीं कर सकता। क्या इस समस्या को हल करने का कोई तरीका है कि सभी मानचित्रों में KeyType = ValeType = Coord
होना चाहिए? मैं filter
पर कॉल में पैरामीटर प्रकारों को स्पष्ट रूप से निर्दिष्ट नहीं करना चाहता हूं।
यह आपको मानता है एक अलग ऑर्डरिंग फ़ंक्शन, या डिफ़ॉल्ट से अलग हैश के साथ मानचित्र का समर्थन नहीं करना चाहते हैं। जो अजीब लगता है। – Yakk