ตามที่ชื่อเมธอดแนะนำว่า copy() จะใช้เมธอดในการคัดลอกข้อมูลด้วยวิธีต่างๆ ที่มีอยู่ใน C++ STL วิธีการทั้งหมดแตกต่างกันในฟังก์ชันการทำงานและพารามิเตอร์ วิธีการเหล่านี้มีอยู่ในไฟล์ส่วนหัว <อัลกอริทึม> มาพูดถึงแต่ละวิธีและฟังก์ชันกัน
คัดลอก(start_i1, end_i1, start_i2)
วิธีนี้ใช้เพื่อคัดลอกข้อมูลจากตัววนซ้ำหนึ่งไปยังตัววนซ้ำอื่นภายในช่วงที่ระบุ โดยที่ทั้งองค์ประกอบเริ่มต้นและสิ้นสุดของตัววนซ้ำนั้นรวมอยู่ด้วย ต้องใช้อาร์กิวเมนต์สามประเภทคือ −
-
Start_i1 − มันจะชี้ไปที่องค์ประกอบเริ่มต้นของตัววนซ้ำ สมมติว่า i_1 จากตำแหน่งที่องค์ประกอบจะถูกคัดลอกไปยังตัววนซ้ำอื่น สมมติว่า i_2
-
End_i1 − มันจะชี้ไปที่องค์ประกอบสุดท้ายของตัววนซ้ำ สมมติว่า i_1 จนถึงตำแหน่งที่องค์ประกอบจะถูกคัดลอกไปยังตัววนซ้ำอื่น สมมติว่า i_2
-
Start_i2 − มันจะชี้ไปที่ตำแหน่งเริ่มต้นของตัววนซ้ำในตำแหน่งที่องค์ประกอบจะถูกคัดลอก เช่น i_2
คืนค่า − มันจะส่งคืนตัววนซ้ำที่ชี้ไปที่จุดสิ้นสุดของตัววนซ้ำปลายทาง เช่น i_2 จนถึงตำแหน่งที่องค์ประกอบถูกคัดลอก
ตัวอย่าง
#include<iostream> #include<algorithm> #include<vector> using namespace std; int main(){ //creating vector v1 vector<int> vec_1 = { 10, 20, 30, 40, 50 }; //declaring empty vector of size vector<int> vec_2(6); // using copy() function to copy in vector 2 copy(vec_1.begin(), vec_1.begin()+4, vec_2.begin()); //print new vector cout<<"Elements in vector v2 copied from v1: "; for(int i=0; i<4; i++){ cout<<vec_2[i] << " "; } }
ผลลัพธ์
ผลลัพธ์ของรหัสนี้จะเป็น -
Elements in vector v2 copied from v1: 10 20 30 40
copy_n(start_i1, total, start_i2)
วิธีนี้ยังใช้เพื่อคัดลอกข้อมูลจากตัววนซ้ำหนึ่งไปยังตัววนซ้ำอื่น แต่จะบอกคอมไพเลอร์ว่าโดยรวมแล้วต้องมีการคัดลอกองค์ประกอบจำนวนเท่าใดโดยเริ่มจากตำแหน่งที่กำหนด ต้องใช้อาร์กิวเมนต์สามประเภทคือ−
-
Start_i1 − มันจะชี้ไปที่องค์ประกอบเริ่มต้นของตัววนซ้ำ สมมติว่า i_1 จากตำแหน่งที่องค์ประกอบจะถูกคัดลอกไปยังตัววนซ้ำอื่น สมมติว่า i_2
-
รวม − มันอธิบายจำนวนองค์ประกอบที่จะคัดลอกโดยเริ่มจากตำแหน่งที่ระบุโดย start_i1 ใช้ได้ทั้งจำนวนเต็มบวกและจำนวนเต็มลบ แต่จะไม่ดำเนินการใดๆ หากเป็นค่าลบ
-
Start_i2 − มันจะชี้ไปที่ตำแหน่งเริ่มต้นของตัววนซ้ำในตำแหน่งที่องค์ประกอบจะถูกคัดลอก เช่น i_2
คืนค่า − มันจะส่งคืนตัววนซ้ำที่ชี้ไปที่จุดสิ้นสุดของตัววนซ้ำปลายทาง เช่น i_2 จนถึงตำแหน่งที่องค์ประกอบถูกคัดลอก
ตัวอย่าง
#include<iostream> #include<algorithm> #include<vector> using namespace std; int main(){ //creating vector v1 vector<int> vec_1 = { 10, 20, 30, 40, 50 }; //declaring empty vector of size vector<int> vec_2(6); // using copy_n() function to copy in vector 2 copy_n(vec_1.begin(), 4, vec_2.begin()); //print new vector cout<<"Elements in vector v2 copied from v1: "; for(int i=0; i<4; i++){ cout<<vec_2[i] << " "; } }
ผลลัพธ์
ผลลัพธ์ของรหัสนี้จะเป็น -
Elements in vector v2 copied from v1: 10 20 30 40
copy_if(start_i1, end_i1, start_i2, ฟังก์ชันบูลีน)
วิธีนี้ใช้เพื่อคัดลอกข้อมูลจากตัววนซ้ำหนึ่งไปยังตัววนซ้ำอื่นภายในช่วงที่ระบุตามเงื่อนไขที่ใช้กับช่วงซึ่งจะถูกกำหนดในอาร์กิวเมนต์ที่สี่ที่ส่งผ่านไปยังฟังก์ชันนี้ ต้องใช้อาร์กิวเมนต์สี่ประเภทคือ−
-
Start_i1 − มันจะชี้ไปที่องค์ประกอบเริ่มต้นของตัววนซ้ำ สมมติว่า i_1 จากตำแหน่งที่องค์ประกอบจะถูกคัดลอกไปยังตัววนซ้ำอื่น สมมติว่า i_2
-
End_i1 − มันจะชี้ไปที่องค์ประกอบสุดท้ายของตัววนซ้ำ สมมติว่า i_1 จนถึงตำแหน่งที่องค์ประกอบจะถูกคัดลอกไปยังตัววนซ้ำอื่น สมมติว่า i_2
-
Start_i2 &รถสองแถว; โดยจะชี้ไปที่ตำแหน่งเริ่มต้นของตัววนซ้ำในตำแหน่งที่องค์ประกอบจะถูกคัดลอก เช่น i_2
-
ฟังก์ชันบูลีน − ในฟังก์ชันนี้ เราจะผ่านเงื่อนไขที่เราต้องการกำหนดให้กับช่วง เนื่องจากประเภทการส่งคืนของฟังก์ชันนี้คือบูลีน มันจะคืนค่าจริง/เท็จ และขึ้นอยู่กับค่าที่ส่งคืน องค์ประกอบช่วงจะแสดงขึ้น
คืนค่า − มันจะส่งคืนตัววนซ้ำที่ชี้ไปที่จุดสิ้นสุดของตัววนซ้ำปลายทาง เช่น i_2 จนถึงตำแหน่งที่องค์ประกอบถูกคัดลอก
ตัวอย่าง
#include<iostream> #include<algorithm> #include<vector> using namespace std; int main(){ //creating vector v1 vector<int> vec_1 = { 10, 21, 30, 40, 57 }; //declaring empty vector of size vector<int> vec_2(6); // using copy_if() function to copy in vector 2 copy_if(vec_1.begin(), vec_1.end(), vec_2.begin(), [](int i){return i%2==0;}); //print new vector cout<<"Elements in vector v2 copied from v1: "; for(int i=0; i<4; i++){ cout<<vec_2[i] << " "; } }
ผลลัพธ์
ผลลัพธ์ของรหัสนี้จะเป็น -
Elements in vector v2 copied from v1: 10 30 40 0
copy_backwards(start_i1, end_i1, end_i2)
วิธีนี้ใช้เพื่อคัดลอกข้อมูลจากตัววนซ้ำหนึ่งไปยังตัววนซ้ำอื่นภายในช่วงที่ระบุในทิศทางย้อนกลับ ซึ่งหมายความว่าตัววนซ้ำจะถูกย้ายไปยังจุดสิ้นสุดตามขนาดและจากองค์ประกอบตำแหน่งนั้นจะถูกวาง ต้องใช้อาร์กิวเมนต์สามประเภทคือ−
-
Start_i1 − มันจะชี้ไปที่องค์ประกอบเริ่มต้นของตัววนซ้ำ สมมติว่า i_1 จากตำแหน่งที่องค์ประกอบจะถูกคัดลอกไปยังตัววนซ้ำอื่น สมมติว่า i_2
-
End_i1 − มันจะชี้ไปที่องค์ประกอบสุดท้ายของตัววนซ้ำ สมมติว่า i_1 จนถึงตำแหน่งที่องค์ประกอบจะถูกคัดลอกไปยังตัววนซ้ำอื่น สมมติว่า i_2
-
end_i2 − มันจะชี้ไปที่ตำแหน่งสิ้นสุดของตัววนซ้ำในตำแหน่งที่องค์ประกอบจะถูกคัดลอก เช่น i_2
คืนค่า − มันจะส่งคืนตัววนซ้ำที่ชี้ไปที่องค์ประกอบเริ่มต้นของตัววนซ้ำปลายทาง เช่น i_2 จนถึงตำแหน่งที่องค์ประกอบถูกคัดลอก
ตัวอย่าง
#include<iostream> #include<algorithm> #include<vector> using namespace std; int main(){ //creating vector v1 vector<int> vec_1 = { 10, 21, 30, 40, 57,67 }; //declaring empty vector of size vector<int> vec_2(6); // using copy_backward() function to copy in vector 2 copy_backward(vec_1.begin(), vec_1.end()+4, vec_2.begin()+5); //print new vector cout<<"Elements in vector v2 copied from v1: "; for(int i=0; i<vec_2.size(); i++){ cout<<vec_2[i] << " "; } }
ผลลัพธ์
ผลลัพธ์ของรหัสนี้จะเป็น -
Elements in vector v2 copied from v1: 0 10 21 30 40 0