गैप बफ़र
This article needs additional citations for verification. (April 2012) (Learn how and when to remove this template message) |
कंप्यूटर विज्ञान में गैप बफर एक गतिशील सरणी है जो एक ही समिष्ट के पास दक्ष सम्मिलन और विलोपन संचालन की अनुमति देता है। गैप बफ़र्स विशेष रूप से टेक्स्ट संपादकों में सामान्य हैं, जहां टेक्स्ट में अधिकांश परिवर्तन कर्सर (कंप्यूटर) के वर्तमान समिष्ट पर या उसके निकट होते हैं। टेक्स्ट को दो सन्निहित खंडों में एक बड़े बफर में संग्रहीत किया जाता है, जिसमें नया टेक्स्ट डालने के लिए उनके मध्य एक अंतर होता है। कर्सर को ले जाने में टेक्स्ट को अंतराल के एक तरफ से दूसरे तक कॉपी करना सम्मिलित है (कभी-कभी कॉपी करने में अगले संचालन तक देरी हो जाती है जो टेक्स्ट को बदल देता है)। सम्मिलन पहले खंड के अंत में नया टेक्स्ट जोड़ता है; हटाने से यह विलुप्त जाता है।
गैप बफर में टेक्स्ट को दो स्ट्रिंग (कंप्यूटर विज्ञान) के रूप में दर्शाया जाता है, जो बहुत अल्प अतिरिक्त जगह लेता है और जिसे लिंक्ड सूचियों जैसे अधिक परिष्कृत डेटा संरचनाओं की तुलना में बहुत तेज़ी से खोजा और प्रदर्शित किया जा सकता है। चूंकि, टेक्स्ट में विभिन्न समिष्ट पर संचालन और जो अंतर को भरते हैं (एक नए अंतर को बनाने की आवश्यकता होती है) के लिए अधिकांश टेक्स्ट की प्रतिलिपि बनाने की आवश्यकता हो सकती है, जो विशेष रूप से बड़ी फ़ाइलों के लिए अक्षम है। गैप बफ़र्स का उपयोग इस धारणा पर आधारित है कि ऐसी पुनर्प्रतिलिपि इतनी अल्प होती है कि इसकी लागत का अधिक सामान्य सस्ते संचालन पर परिशोधन विश्लेषण किया जा सकता है। यह टेक्स्ट संपादकों में उपयोग के लिए गैप बफर को रस्सी (डेटा संरचना) का एक सामान्य विकल्प बनाता है[1] जैसे Emacs.[2]
उदाहरण
बफ़र अंतराल के साथ संचालन के कुछ उदाहरण नीचे दिए गए हैं। अंतर को वर्गाकार कोष्ठकों के मध्य के रिक्त समिष्ट द्वारा दर्शाया जाता है। यह प्रतिनिधित्व थोड़ा भ्रामक है: एक विशिष्ट कार्यान्वयन में, अंतराल के अंतिम बिंदुओं को सूचक (कंप्यूटर प्रोग्रामिंग) या सरणी सूचकांकों का उपयोग करके ट्रैक किया जाता है, और अंतराल की सामग्री को नजरअंदाज कर दिया जाता है; यह, उदाहरण के लिए, बफ़र में टेक्स्ट को बदले बिना सूचक को समायोजित करके विलोपन करने की अनुमति देता है। गैप पॉइंटर्स के लिए अर्ध-खुले अंतराल का उपयोग करना एक सामान्य प्रोग्रामिंग अभ्यास है, अर्थात पहले बफ़र में अंतिम वर्ण के बाद अमान्य वर्ण को प्रारंभ-ऑफ़-गैप बिंदु, और दूसरे बफ़र में पहले वैध वर्ण को अंत-अंतराल बिंदु (या समकक्ष, पॉइंटर्स को वर्णों के मध्य इंगित करने वाला माना जाता है)।
आरंभिक राज्य:
यह रास्ता है [ ]बाहर।
उपयोगकर्ता कुछ नया टेक्स्ट सम्मिलित करता है:
इस तरह से दुनिया का प्रारंभ हुआ [ ]।
उपयोगकर्ता प्रारंभ करने से पहले कर्सर ले जाता है; सिस्टम चालें पहले बफ़र से दूसरे बफ़र तक प्रारंभ हुईं।
इस तरह से दुनिया का प्रारंभ हुआ।
उपयोगकर्ता अंतर को भरने वाला टेक्स्ट जोड़ता है; सिस्टम नया अंतर बनाता है:
जैसा कि हम जानते हैं, दुनिया का प्रारंभ इसी तरह हुआ था।
यह भी देखें
- डायनेमिक ऐरे, गैप बफर का विशेष स्थिति जहां गैप सदैव अंत में होता है
- जिपर (डेटा संरचना), वैचारिक रूप से गैप बफर का एक सामान्यीकरण।
- लिंक्ड सूची
- गोलाकार बफ़र
- रस्सी (कंप्यूटर विज्ञान)
- रचना तालिका - ब्रावो और माइक्रोसॉफ्ट वर्ड द्वारा उपयोग की जाने वाली डेटा संरचना
संदर्भ
- ↑ Mark C. Chu-Carroll. "Gap Buffers, or, Don’t Get Tied Up With Ropes?" ScienceBlogs, 2009-02-18. Accessed 2013-01-30.
- ↑ emacs gap buffer info Accessed 2013-01-30.
बाहरी संबंध
- Implementation in C
- Overview and implementation in .NET/C#
- Brief overview and sample C++ code
- Implementation of a cyclic sorted gap buffer in .NET/C#
- Use of gap buffer in early editor. (First written somewhere between 1969 and 1971)
- emacs gap buffer info(Emacs gap buffer reference)
- Flexichain: An editable sequence and its gap-buffer implementation