Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

std::vector::resize() กับ std::vector::reserve() ใน C ++


เวกเตอร์สามารถปรับขนาดตัวเองได้โดยอัตโนมัติเหมือนกับไดนามิกอาร์เรย์เมื่อองค์ประกอบถูกแทรกหรือลบ คอนเทนเนอร์จะจัดการที่เก็บข้อมูลโดยอัตโนมัติ

ความแตกต่างที่สำคัญระหว่าง vector resize() และ vector reserve() คือการ resize() ใช้เพื่อเปลี่ยนขนาดของเวกเตอร์ที่ reserve() ไม่ทำ Reserve() ใช้เพื่อเก็บอย่างน้อยจำนวนองค์ประกอบที่ระบุโดยไม่ต้องจัดสรรหน่วยความจำใหม่ แต่ใน resize() หากตัวเลขน้อยกว่าจำนวนปัจจุบัน ระบบจะปรับขนาดหน่วยความจำและลบพื้นที่ส่วนเกินออก

vector::resize()

Vector resize() ใช้เพื่อเปลี่ยนขนาด

ตัวอย่าง

ขั้นตอนในซอร์สโค้ด:

เริ่มต้น ประกาศตัวแปร v ประเภทเวกเตอร์ ประกาศตัวแปรอื่นเป็นตัววนซ้ำของประเภทเวกเตอร์ ประกาศตัวแปรอีกสองตัว c และ i ให้กับประเภทข้อมูลของ inger ในขณะที่ (TRUE) พิมพ์ “1.Size of the Vector” พิมพ์ “2.Insert Element into the Vector” พิมพ์ “3.ปรับขนาดเวกเตอร์” พิมพ์ “4.Display by Iterator” พิมพ์ “5.Exit” พิมพ์ "ป้อนตัวเลือกของคุณ:" ป้อนค่าของตัวแปร c Switch(c) กรณีที่ 1. พิมพ์ “Size of Vector:”. ฟังก์ชัน Call size() เพื่อพิมพ์ขนาดของเวกเตอร์ หยุดพัก. กรณีที่ 2 พิมพ์ “ป้อนค่าที่จะแทรก:” ป้อนค่าของตัวแปร i เรียกใช้ฟังก์ชัน push_back() เพื่อป้อนค่าในเวกเตอร์ หยุดพัก. กรณีที่ 3 พิมพ์ “ปรับขนาดองค์ประกอบเวกเตอร์:” เรียกใช้ฟังก์ชัน resize() เพื่อปรับขนาดเวกเตอร์ หยุดพัก. กรณีที่ 4. พิมพ์ “การแสดงเวกเตอร์โดย Iterator:” for (it =v.begin(); it !=v.end(); it++) พิมพ์ค่าของ iterator it หยุดพัก. กรณีที่ 5. เรียกใช้ฟังก์ชัน exit() เพื่อออก หยุดพัก. ค่าเริ่มต้น. พิมพ์ “เลือกผิด” จบ.

ตัวอย่าง

#include #include ใช้เนมสเปซ std;int main() { vector  v; vector::วนซ้ำมัน; int ค, ผม; ในขณะที่ (1) { cout<<"1.ขนาดของเวกเตอร์"<>ค; สวิตช์ (c) { กรณีที่ 1:cout <<"ขนาดของเวกเตอร์:"; ศาล<>ผม; v.push_back(ผม); // การแทรกค่าแตก; กรณีที่ 3:cout<<"ปรับขนาดองค์ประกอบเวกเตอร์:"< 

ผลลัพธ์

1.ขนาดของ Vector2.Insert Element ลงใน Vector3.Resize the vector4.Display by Iterator5.ExitEnter your Choice:1Size of Vector:01.Size of the Vector2.Insert Element into the Vector3.Resize the vector4.Display โดย Iterator5.Exitป้อนตัวเลือกของคุณ:2ป้อนค่าที่จะแทรก:11.ขนาดของ Vector2.Insert Element ลงใน Vector3.Resize the vector4.Display by Iterator5.ExitEnter your Choice:2Enter ค่าที่จะแทรก:21.Size of the Vector2 .Insert Element ลงใน Vector3.Resize the vector4.Display by Iterator5.ExitEnter your Choice:2Enter ค่าที่จะแทรก:41.Size ของ Vector2.Insert Element ลงใน Vector3.Resize the vector4.Display โดย Iterator5.Exit Enter your Choice:2ป้อนค่าที่จะแทรก:51.ขนาดของ Vector2.Insert Element ลงใน Vector3.Resize the vector4.Display by Iterator5.ExitEnter your Choice:2Enter value to be inserted:51.Size of the Vector2.Insert Element into the Vector3 ปรับขนาด vector4.Display โดย Iterator5.Exit ป้อนตัวเลือกของคุณ:4Display ing Vector โดย Iterator:1 2 4 5 51.Size of the Vector2.Insert Element into the Vector3.Resize the vector4.Display by Iterator5.ExitEnter your Choice:3Resize the vector elements:1.Size of the Vector2.Insert Element into the Vector3.ปรับขนาด vector4.Display โดย Iterator5.Exit Enter your Choice:4Displaying Vector by Iterator:1 2 4 51.Size of the Vector2.Insert Element into the Vector3.Resize the vector4.Display by Iterator5.Exit Enter your Choice:5 

vector::reserve()

Vector Reserve() บ่งชี้ว่าเวกเตอร์ถูกสร้างขึ้นเพื่อให้สามารถเก็บอย่างน้อยจำนวนขององค์ประกอบที่ระบุโดยไม่ต้องจัดสรรหน่วยความจำใหม่ ขั้นตอนในตัวอย่าง

อัลกอริทึม

เริ่มต้น ประกาศตัวแปร v ประเภทเวกเตอร์ ประกาศตัวแปรอื่นเป็นตัววนซ้ำของประเภทเวกเตอร์ ประกาศตัวแปรอีกสองตัว c และ i ให้กับประเภทข้อมูลของ inger ในขณะที่ (1) พิมพ์ “1.Size of the Vector” พิมพ์ “2.Insert Element into the Vector” พิมพ์ “3. จองเวกเตอร์” พิมพ์ “4.Display by Iterator” พิมพ์ “5.Exit” พิมพ์ "ป้อนตัวเลือกของคุณ:" ป้อนค่าของตัวแปร c Switch(c) กรณีที่ 1. พิมพ์ “Size of Vector:”. ฟังก์ชัน Call size() เพื่อพิมพ์ขนาดของเวกเตอร์ หยุดพัก. กรณีที่ 2 พิมพ์ “ป้อนค่าที่จะแทรก:” ป้อนค่าของตัวแปร i เรียกใช้ฟังก์ชัน push_back() เพื่อป้อนค่าในเวกเตอร์ หยุดพัก. กรณีที่ 3 พิมพ์ “จององค์ประกอบเวกเตอร์:” ฟังก์ชัน Call Reserve() เพื่อจองขนาดของเวกเตอร์ หยุดพัก. กรณีที่ 4. พิมพ์ “การแสดงเวกเตอร์โดย Iterator:” for (it =v.begin(); it !=v.end(); it++) พิมพ์ค่าของ iterator it หยุดพัก. กรณีที่ 5. เรียกใช้ฟังก์ชัน exit() เพื่อออก หยุดพัก. ค่าเริ่มต้น. พิมพ์ “เลือกผิด” จบ.

ตัวอย่าง

#include #include ใช้เนมสเปซ std;int main() { vector  v; vector::วนซ้ำมัน; int ค, ผม; ในขณะที่ (1) { cout<<"1.ขนาดของเวกเตอร์"<>ค; สวิตช์ (c) { กรณีที่ 1:cout <<"ขนาดของเวกเตอร์:"; ศาล<>ผม; v.push_back(ผม); หยุดพัก; กรณีที่ 3:cout<<"จององค์ประกอบเวกเตอร์"< 

ผลลัพธ์


1.ขนาดของ Vector2.Insert Element ลงใน Vector3.Reserve the vector4.Display by Iterator5.ExitEnter your Choice:1Size of Vector:01.Size of the Vector2.Insert Element into the Vector3.Reserve the vector4.Display โดย Iterator5.Exit ป้อนตัวเลือกของคุณ:2ป้อนค่าที่จะแทรก:11.ขนาดของ Vector2.Insert Element ลงใน Vector3.Reserve the vector4.Display by Iterator5.ExitEnter your Choice:2Enter ค่าที่จะแทรก:21.Size of the Vector2 .Insert Element ลงใน Vector3.Reserve the vector4.Display by Iterator5.ExitEnter your Choice:2Enter ค่าที่จะแทรก:31.Size of the Vector2.Insert Element ลงใน Vector3.Reserve the vector4.Display by Iterator5.Exit Enter your Choice:2ป้อนค่าที่จะแทรก:41.ขนาดของ Vector2.Insert Element ลงใน Vector3.Reserve the vector4.Display by Iterator5.ExitEnter your Choice:2Enter value to be inserted:51.Size of the Vector2.Insert Element into the Vector3 จอง vector4.Display โดย Iterator5.Exit ป้อนตัวเลือกของคุณ:3 จององค์ประกอบเวกเตอร์1.ขนาดของ Vector2.Insert Element ลงใน Vector3.Reserve the vector4.Display by Iterator5.Exit Enter your Choice:4การแสดงเวกเตอร์โดย Iterator:1 2 3 4 51.Size ของ Vector2.Insert องค์ประกอบลงใน Vector3. จองเวกเตอร์4.แสดงโดย Iterator5.Exit ป้อนตัวเลือกของคุณ:4แสดงเวกเตอร์โดย Iterator:1 2 3 4 51. ขนาดของ Vector2.Insert Element ลงใน Vector3.Reserve the vector4.Display โดย Iterator5.Exit