कहो मुझे लगता है कि युगल के सरणियों की एक सरणी के रूप में प्रतिनिधित्व कर रहे हैं डेटा बिंदुओं का एक सेट है, तोक्रमबद्ध सी में विभिन्न अनुक्रमित द्वारा सरणियों की एक सरणी
double **data;
अब अगर मैं द्वारा डेटा को सॉर्ट करना चाहता था डेटा बिंदुओं में से प्रत्येक में कुछ क्षेत्र, का कहना है कि 2 nd क्षेत्र, मैं एक तुलनित्र ऐसा ही कुछ करना होगा लिखना होगा:
int compare_data_second_field(void *a, void *b) {
double da = ((double *) a)[1];
double db = ((double *) b)[1];
if (da < db) return -1;
else if (da > db) return 1;
return 0;
}
और फिर 2 nd फाई द्वारा उन्हें सुलझाने के लिए qsort
का उपयोग फ़ील्ड।
मेरा सवाल यह है कि अगर मैं हाथ से पहले नहीं जानता कि मैं किस क्षेत्र से सॉर्ट करना चाहता हूं तो मैं इसे कैसे सामान्यीकृत करूं? जैसे मैं 1 सेंट फ़ील्ड कभी-कभी और 5 वें फ़ील्ड द्वारा सॉर्ट करना चाहता हूं, आदि। मैं इसे थ्रेड सुरक्षित भी पसंद करूंगा, इसलिए मैं एक वैश्विक चर का उपयोग नहीं करना चाहता हूं इनमें से कई के बाद से क्रमबद्ध करने के लिए क्षेत्र एक बार में जा रहा है।
सी ++ में मैं सिर्फ एक कस्टम सॉर्टिंग क्लास का उपयोग करता हूं और कक्षा में एक उदाहरण चर होता है ताकि ट्रैक को किस क्रमबद्ध किया जा सके। मुझे नहीं पता कि सी
आप वास्तव में _third_ आइटम को पकड़ रहे हैं। क्या आप इससे जागरुक हैं? –
असल में 'डबल ** डेटा है;' डबल डेटा ** नहीं; ' –
इनमें से दोनों के लिए संपादित किया गया।जबकि वे सच हैं, वे चर्चा के लिए पूरी तरह से अप्रासंगिक हैं और वास्तव में कुछ भी नहीं जोड़ते हैं, लेकिन जो भी हो। – pjreddie