ที่นี่เราจะเห็นข้อดีและข้อเสียของเวกเตอร์เหนืออาร์เรย์ใน C++
-
เวกเตอร์เป็นคลาสเทมเพลต นี่คือโครงสร้าง C++ เท่านั้น Arrays เป็นโครงสร้างภาษาในตัว มีอาร์เรย์ในภาษาต่างๆ
-
เวกเตอร์ถูกนำมาใช้เป็นอาร์เรย์ไดนามิกพร้อมอินเทอร์เฟซรายการ อาร์เรย์สามารถนำมาใช้โดยใช้วิธีสแตติกหรือไดนามิกกับประเภทข้อมูลดั้งเดิม
ตัวอย่าง
#include<iostream> #include<vector> using namespace std; int main() { int array[10]; //statically allocated array int* arr = new int[10]; //dynamically allocated array vector<int> vec; }
-
ขนาดอาร์เรย์ได้รับการแก้ไข เมื่อสร้างอาร์เรย์ขึ้นมา เราไม่สามารถเปลี่ยนขนาดได้ ขนาดของเวกเตอร์เป็นไดนามิก หากเราเพิ่มองค์ประกอบใหม่ หากสถานที่นั้นไม่ว่าง จะสร้างพื้นที่ใหม่สำหรับมัน และพื้นที่เพิ่มเติมบางส่วน
-
หากอาร์เรย์ได้รับการจัดสรรแบบไดนามิก เราต้องจัดสรรใหม่ด้วยตนเอง แต่ในเวกเตอร์ เราไม่จำเป็นต้องจัดสรรคืน แต่จะจัดสรรคืนโดยอัตโนมัติ
ตัวอย่าง
#include<iostream> #include<vector> using namespace std; int main() { int* arr = new int[10]; //dynamically allocated array delete(arr); //deallocate manually vector<int> vec; //will be deallocated when variable is out of scope }
-
หากเราต้องการได้ขนาดของอาร์เรย์ที่จัดสรรแบบไดนามิก เราไม่สามารถหาขนาดได้อย่างง่ายดาย สำหรับเวกเตอร์ เราสามารถหาขนาดได้ในเวลาคงที่
-
หากเราต้องการส่งหนึ่งอาร์เรย์โดยใช้พารามิเตอร์ของฟังก์ชัน เราต้องส่งตัวแปรอื่นสำหรับขนาดหรือความยาว ถ้าเราส่งเวกเตอร์ เราก็ไม่จำเป็นต้องส่งผ่านตัวแปรอื่น
-
เราไม่สามารถคืนค่าหนึ่งอาร์เรย์ได้ เว้นแต่เราจะใช้อาร์เรย์ใหม่ที่จัดสรรแบบไดนามิก แต่เราสามารถคืนค่าเวกเตอร์จากฟังก์ชันได้