सवाल की तरह, मैं इसके कारण के बारे में सोच रहा हूं। क्योंकि जब मैं const
और गैर-const
इटरेटर्स के बीच की दूरी प्राप्त करने का प्रयास करता हूं तो मुझे एक त्रुटि मिलती है।क्यों std :: दूरी कॉन्स और nonconst iterators के मिश्रण पर काम नहीं करता है?
vector<int> v;
auto it=v.begin();
auto cit=v.cbegin();
distance(it,cit);
no matching function for call to ‘distance(__gnu_cxx::__normal_iterator<int*, std::vector<int> >&, __gnu_cxx::__normal_iterator<const int*, std::vector<int> >&)
इटरेटर की सीमित समझ से, मुझे कोई कारण नहीं दिखता कि इसे क्यों काम नहीं करना चाहिए।
हम्म क्यों वे सिर्फ 2 टेम्पलेट पैरा के साथ टेम्पलेट नहीं बनाते हैं? क्या सीपीपी कोर लैंग में ऐसा करना संभव है? मैं क्या पूछ रहा हूं कि एक डिजाइन निर्णय या लैंग सीमा? – NoSenseEtAl
स्पष्ट होने के लिए, मुझे पता है कि वे टेम्पलेट को 2 टेम्पलेट पैराम के साथ बना सकते हैं, लेकिन मुझे आश्चर्य है कि यह 1 टेम्पलेट पैराम संस्करण – NoSenseEtAl
@NoSenseEtAl के साथ संघर्ष करेगा, मैं डिज़ाइन निर्णय कहूंगा। यह उस तरह से आसान है, और विभिन्न प्रकार के इटरेटर के बीच की दूरी की गणना (कहें, एक यादृच्छिक अभिगम इटरेटर और एक आगे इटरेटर) शायद ऐसा कुछ नहीं है जिसे आप अक्सर करना चाहते हैं। आप वास्तव में दो टेम्पलेट तर्कों के साथ एक संस्करण लिख सकते हैं, लेकिन वास्तविक दुनिया की समस्या क्या हल करेगी? –