मैं एक सरणी "_vec" में मानों के आधार पर सूचकांक सॉर्ट करने के लिए एक सरल तुलनित्र को लागू करने का प्रयास कर रहा हूं। मुझे एक "अवैध < ऑपरेटर" रन-टाइम त्रुटि संदेश मिल रहा है।अमान्य <ऑपरेटर assertion
class Compare{
vector<int>& _vec;
public:
Compare(vector<int>& vec) : _vec(vec) {}
bool operator()(size_t i, size_t j){
if(_vec[i] != _vec[j])
return _vec[i] < _vec[j];
else
return (double)rand()/RAND_MAX < 0.5;
}
};
मैं उपयोग कर रहा हूँ निम्नलिखित समारोह कॉल:
sort(inds.begin(),inds.end(),Compare(vals));
जहां inds 1 से 15 से सूचकांक युक्त सिर्फ एक सरणी है (माना) और मैं समझने के लिए निम्नलिखित कोड के साथ गलत है असफल vals लंबाई 15 की सरणी है जो कुछ मानों के साथ है जिनके क्रमबद्ध इंडेक्स मैं गणना करना चाहता हूं। कुल लक्ष्य सॉर्ट ऑर्डर को यादृच्छिक बनाना है जब vals में दो (या अधिक) प्रविष्टियां बराबर होती हैं। कोई मदद?
आपको पिछला अंडरस्कोर (या इन्हें अलग करने के लिए कुछ और) का उपयोग करना चाहिए [अग्रणी अंडरस्कोर के बजाए] (http://stackoverflow.com/questions/228783/what-are-the-rules-about-using-an-underscore -इन-एसी-पहचानकर्ता)। –
@ ब्रायन: चूंकि ये फ़ाइल स्कोप नहीं हैं और अंडरस्कोर को अपरकेस वर्ण के बाद नहीं किया जाता है, वे ठीक से आरक्षित नहीं हैं। फिर भी, इस क्षेत्र में पर्याप्त भ्रम पैदा होता है कि एक और नामकरण सम्मेलन कुछ लोगों को खुश कर सकता है। –
एक नोट के रूप में - यदि 'vals' की लंबाई 15 है, तो 'इंडस' में श्रेणी [0..14] में इंडेक्स बेहतर था, [1..15] नहीं। –