2012-04-03 7 views
41

मैं Arduino पर "waypoints" का वेक्टर बना रहा हूँ। प्रत्येक मार्ग बिंदु एक वस्तु है। Arduino स्पष्ट रूप से waypoint नेविगेशन के लिए कई मार्ग बिंदुओं को स्टोर करने की आवश्यकता होगी। लेकिन मानक preprogrammed सरणी में इन मार्ग बिंदुओं को संग्रहीत करने के बजाय, उपयोगकर्ता को जोड़ने, हटाने के तरीकों को हटाने और उन्हें चारों ओर स्थानांतरित करने में सक्षम होना चाहिए। दुर्भाग्य से Arduino एक अंतर्निहित पुस्तकालय के रूप में एक वेक्टर प्रकार की पेशकश नहीं करता है।Arduino में वेक्टर

मैं वर्तमान में दो विकल्प पर विचार कर रहा हूँ:

  1. Container for objects like C++ 'vector'? में, किसी एक सामान्य प्रयोजन पुस्तकालय तैनात। इसमें कोई इंडेक्स हटाना, या आंदोलन संचालन शामिल नहीं है। लेकिन इसमें कुछ स्मृति प्रबंधन रणनीतियों को शामिल किया गया है।

  2. मैं malloc, dealloc, calloc अतीत में इस्तेमाल किया है। लेकिन मुझे यह विकल्प बिल्कुल पसंद नहीं है, खासकर कक्षाओं के साथ। लेकिन क्या यह मेरे सेनेरियो में एक बेहतर विकल्प है?

कौन सा एक नीचे जाने का बेहतर मार्ग है?

+3

आप यहां देखना चाहेंगे: http://andybrown.me.uk/ws/2011/01/15/the-standard-template-library-stl-for-avr-with-c-streams/ – paulsm4

उत्तर

48

Standard C++ for Arduino एक विकल्प हो सकता है। यह आपको Arduino में STLvector का उपयोग करने देता है।

+0

वाह , वह पुस्तकालय सेट काफी प्रभावशाली है। उस के लिए धन्यवाद! – jakebird451

+6

एक तरफ के रूप में, आप उपयोग कर रहे Arduino के प्रकार का उल्लेख करना बहुत उपयोगी है। मेगा 2560 पर काम करने वाला एक समाधान छोटे और पुराने Arduinos पर काम करने की संभावना कम है। बस एक सुझाव। अनदेखा करने के लिए स्वतंत्र महसूस करें :) –

+2

यह पुस्तकालय अद्भुत है। – PixMach

1

Arduino सीमित स्मृति है, इसलिए आपको यह जानने की जरूरत है कि आप कितने तरीके से अनुमति देंगे। इस मामले में आवंटित मार्ग बिंदुओं के मेमोरी पॉइंटर्स (पते) को पकड़ने के लिए एक सरल सरणी आपको अनुक्रम/क्रम प्रदान करेगी। एक कार्यक्षेत्र के रूप में एक सरणी स्लॉट मुक्त रखने से वेपॉइंट्स को चारों ओर स्थानांतरित करने की अनुमति मिल जाएगी (पुन: आदेशित)।

4

लगता है जैसे आप एक साधारण लिंक्ड सूची को लागू करना चाहते हैं। एक लिंक्ड सूची आपको सी ++ वैक्टर से जुड़े ओवरहेड के बिना ऑब्जेक्ट्स (वेप पॉइंट्स, आपके मामले में) को स्थानांतरित करने की अनुमति देती है।

यहां एक कार्यान्वयन on GitHub है।

+0

मैं गितूब के शीर्ष पर आपका उदाहरण समझ नहीं पा रहा हूं। कोई भी मौका आप कुछ नमूना कोड और अपेक्षित परिणाम, एक ला php.net शैली दिखा सकता है? –

+0

हालांकि यह लिंक प्रश्न का उत्तर दे सकता है, लेकिन यहां उत्तर के आवश्यक हिस्सों को शामिल करना बेहतर है और संदर्भ के लिए लिंक प्रदान करना बेहतर है। लिंक किए गए पृष्ठ में परिवर्तन होने पर लिंक-केवल उत्तर अमान्य हो सकते हैं। - [समीक्षा से] (/ समीक्षा/कम गुणवत्ता वाली पोस्ट/18589237) – kritzikratzi

0

आपके पास मार्ग बिंदु संरचनाओं की एक निश्चित सरणी भी हो सकती है और यदि पथ बिंदु उपयोग में है या नहीं तो संरचना में एक चर शामिल करें। एक रास्ता बिंदु जोड़ते समय, आपको सरणी के माध्यम से लूप करना होगा जब तक आपको उस संरचना को न मिल जाए जो उपयोग में नहीं है।

 संबंधित मुद्दे