Dynamic Array คืออะไร?

อาเรย์แบบไดนามิกเป็นโครงสร้างข้อมูลที่ใช้ในการเขียนโปรแกรมคอมพิวเตอร์ที่เก็บวัตถุการคำนวณหลายอย่างเป็นกลุ่มเดียวและสามารถปรับขนาดได้ตามความต้องการเพื่อรองรับจำนวนวัตถุที่แตกต่างกัน กลุ่มถูกเก็บไว้ในบล็อกหน่วยความจำต่อเนื่องเดี่ยวดังนั้นการเข้าถึงองค์ประกอบจึงมีประสิทธิภาพและรวดเร็ว อาร์เรย์แบบไดนามิกเรียกอีกอย่างว่าเวกเตอร์หรือรายการขึ้นอยู่กับภาษาคอมพิวเตอร์ที่ใช้ แม้จะมีชื่อเหล่านี้รายการหรือเวกเตอร์ใด ๆ ที่เฉพาะเจาะจงอาจไม่ใช่อาร์เรย์แบบไดนามิกเนื่องจากรายการและเวกเตอร์อาจมีการใช้งานที่แตกต่างจากอาร์เรย์และจากกันและกัน

C ++ มีคลาสอาเรย์แบบไดนามิกเดียวที่เรียกว่า vector ซึ่งอยู่ในกลุ่มคลาสที่เรียกว่าไลบรารีเทมเพลตมาตรฐาน อาเรย์ที่สนับสนุนคลาสนี้สามารถเข้าถึงได้โดยตัววนซ้ำหรือดัชนี ความสามารถในการปรับขนาดตามความต้องการนั้นเป็นข้อได้เปรียบที่ยิ่งใหญ่ แต่มันสามารถล่อให้ผู้เขียนโปรแกรมเข้าสู่การรักษาความปลอดภัยที่ผิดพลาดได้ อาร์เรย์แบบไดนามิกสำรองข้อมูลเวกเตอร์ไม่สามารถตรวจสอบให้แน่ใจว่าคำขอการเข้าถึงนั้นถูกต้อง เช่นอาร์เรย์คงที่อาร์เรย์แบบไดนามิกสามารถมีขอบเขตการตรวจสอบและปัญหาความเสียหายของหน่วยความจำหากโปรแกรมพยายามเข้าถึงหน่วยความจำที่ไม่ได้รับการจัดสรรสำหรับพวกเขา

Java มีคลาสอาเรย์แบบไดนามิกที่แตกต่างกันสามคลาส: Vector, ArrayList และ CopyOnWriteArrayList องค์ประกอบในอาร์เรย์นั้นเข้าถึงได้โดยดัชนีเท่านั้นและการพยายามเข้าถึงดัชนีนอกอาร์เรย์มักจะไม่ทำให้เกิดปัญหาความเสียหายของหน่วยความจำ คลาส Java Vector นั้นเทียบเท่ากับคลาส C ++ โดยประมาณและไม่ถูกซิงโครไนซ์เพื่อเปิดใช้งานการเข้าถึงโดยหลายเธรด ArrayList และ CopyOnWriteArrayList ตรงกันข้ามทั้งสองมีความปลอดภัยของเธรด ในทั้งสามนี้ CopyOnWriteArrayList เป็นคลาสที่ใช้แรงงานมากที่สุดเนื่องจากมันจะสร้างอาเรย์แบบไดนามิกขึ้นใหม่ทุกครั้งที่มีการเขียนค่าใหม่ลงในอาเรย์

อาร์เรย์แบบไดนามิกมีการใช้งานในลักษณะเดียวกันโดยไม่คำนึงถึงภาษาคอมพิวเตอร์ที่เกี่ยวข้อง แต่ขึ้นอยู่กับภาษาใดภาษาหนึ่งโดยเฉพาะอาจมีความสามารถอื่น ๆ เช่นเดียวกับอาร์เรย์แบบคงที่อาร์เรย์แบบไดนามิกไม่ได้ จำกัด ประเภทของวัตถุที่สามารถเก็บไว้ภายในวัตถุนั้นได้ตราบใดที่วัตถุประเภทเดียวกันทั้งหมด โปรแกรมเมอร์ไม่จำเป็นต้องเข้าถึงอาเรย์แบบไดนามิกโดยตรง มันสามารถทำได้ผ่านคลาสที่ล้อมอาร์เรย์สำหรับการใช้งานง่าย การใช้งานอาร์เรย์เหล่านี้อย่างเหมาะสมสามารถช่วยโปรแกรมเมอร์ในการจัดระเบียบข้อมูลภายในโค้ดและการสร้างโค้ดที่เข้าใจง่ายซึ่งช่วยให้การบำรุงรักษาง่ายขึ้น