के आधार पर बिंदुओं का एक वेक्टर ऑर्डर करें, मैं एक सी ++ एप्लिकेशन पर काम कर रहा हूं।किसी अन्य वेक्टर
मैं
vector<Point2f> vectorAll;
vector<Point2f> vectorSpecial;
Point2f परिभाषित किया गया है typedef Point_<float> Point2f;
vectorAll 1000 बिंदु है, जबकि vectorSpecial 10 अंक है अंकों की 2 वैक्टर की है।
पहला चरण:
मैं vectorAll में उनके आदेश पर निर्भर करता है vectorSpecial में अंक ऑर्डर करने के लिए की जरूरत है। तो कुछ इस तरह:
For each Point in vectorSpecial
Get The Order Of that point in the vectorAll
Insert it in the correct order in a new vector
मैं एक डबल पाश करना और अनुक्रमित बचा सकता है। और उसके बाद उनके सूचकांक के आधार पर अंक ऑर्डर करें। हालांकि इस विधि में बहुत अधिक समय लग रहा है (उदाहरण के लिए वेक्टरएल में 10000 अंक और वेक्टर विशेष में 1000 अंक) ताकि दस मिलियन पुनरावृत्ति हो)
ऐसा करने के बेहतर तरीके क्या हैं?
दूसरा कदम:
vectorSpecial में कुछ बिंदुओं vectorAll में उपलब्ध नहीं हो सकता है। मुझे उस बिंदु को लेने की ज़रूरत है जो इसके निकटतम है (सामान्य दूरी सूत्र sqrt((x1-x2)^2 + (y1-y2)^2)
)
यह लूपिंग के दौरान भी किया जा सकता है, लेकिन अगर किसी के पास बेहतर तरीके के लिए कोई सुझाव है, तो मैं इसकी सराहना करता हूं।
धन्यवाद किसी भी मदद के लिए एक बहुत
ध्यान दें कि एसटीएल एल्गोरिदम को कॉल करना लूपिंग को खत्म नहीं करता है, यह सिर्फ उन्हें एक अमूर्त परत के पीछे छुपाता है। – TemplateRex