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

ตั้งค่าฟังก์ชัน cbegin() และ cend() ใน C++ STL


ในบทความนี้เราจะพูดถึงฟังก์ชัน set::cend() และ set::cbegin() ใน C++ STL ไวยากรณ์ การทำงาน และค่าที่ส่งคืน

การตั้งค่าใน C++ STL คืออะไร

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

ชุดอะไร::cbegin():

ฟังก์ชัน cbegin() เป็นฟังก์ชัน inbuilt ใน C++ STL ซึ่งกำหนดไว้ในไฟล์ส่วนหัว ฟังก์ชันนี้ส่งคืนตัววนซ้ำคงที่ซึ่งชี้ไปที่องค์ประกอบแรกในคอนเทนเนอร์ที่ตั้งไว้ เนื่องจาก iterator ทั้งหมดใน set container เป็นตัววนซ้ำแบบคงที่ จึงไม่สามารถใช้เพื่อแก้ไขเนื้อหาทั้งหมดที่เราสามารถใช้เพื่อสำรวจระหว่างองค์ประกอบของ set container โดยการเพิ่มหรือลดการวนซ้ำ

ไวยากรณ์

constant_iterator name_of_set.cbegin();

พารามิเตอร์

This function does not accept any parameter.

คืนค่า

ฟังก์ชันนี้จะคืนค่า constant_iterator ซึ่งเลยจุดสิ้นสุดของลำดับ

ตัวอย่าง

Input: set<int> set_a = {18, 34, 12, 10, 44};
   set_a.cbegin();
Output: Beginning element in the set container: 10

ตัวอย่าง

#include <iostream>
#include <set>
using namespace std;
int main (){
   set<int> set_a = {18, 34, 12, 10, 44};
   cout << "Beginning element in the set container: ";
   cout<< *(set_a.cbegin());
   return 0;
}

ผลลัพธ์

หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -

Beginning element in the set container: 10

ตัวอย่าง

#include <iostream>
#include <set>
using namespace std;
int main (){
   set<int> set_a = {18, 34, 12, 10, 44};
   cout << "set_a contains:";
   for (auto it=set_a.cbegin(); it != set_a.cend(); ++it)
      cout << ' ' << *it;
   cout << '\n';
   return 0;
}

ผลลัพธ์

หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -

set_a contains: 10 12 18 34 44

ชุดอะไร::cend()

ฟังก์ชัน cend() เป็นฟังก์ชัน inbuilt ใน C++ STL ซึ่งกำหนดไว้ในไฟล์ส่วนหัว ฟังก์ชันนี้ส่งคืนตัววนซ้ำคงที่ขององค์ประกอบที่ผ่านองค์ประกอบสุดท้ายในคอนเทนเนอร์ที่ตั้งไว้ เนื่องจาก iterator ทั้งหมดใน set container เป็นตัว iterator คงที่ จึงไม่สามารถนำมาใช้เพื่อแก้ไขเนื้อหาทั้งหมดที่เราสามารถใช้ได้สำหรับการสำรวจระหว่างองค์ประกอบของ set container โดยการเพิ่มหรือลดการ iterator

ไวยากรณ์

constant_iterator name_of_set.cend();

พารามิเตอร์

ฟังก์ชันนี้ไม่ยอมรับพารามิเตอร์ใดๆ

คืนค่า

ฟังก์ชันนี้จะคืนค่า constant_iterator ซึ่งเลยจุดสิ้นสุดของลำดับ

ตัวอย่าง

Input: set<int> set_a = {18, 34, 12, 10, 44};
set_a.end();
Output: Past to end element: 5

set::cend() ใช้กับ cbegin() หรือ start() เพื่อวนซ้ำทั้งชุด เพราะมันชี้ไปที่องค์ประกอบที่ผ่านมาไปยังองค์ประกอบสุดท้ายในคอนเทนเนอร์

ตัวอย่าง

#include <iostream>
#include <set>
using namespace std;
int main (){
   set<int> set_a = {18, 34, 11, 10, 44};
   cout << "Past to end element: ";
   cout<< *(set_a.cend());
   return 0;
}

ผลลัพธ์

หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -

Past to end element: 5
We will get a random value

ตัวอย่าง

#include <iostream>
#include <set>
using namespace std;
int main (){
   set<int> set_a = {18, 34, 12, 10, 44};
   cout << " set_a contains:";
   for (auto it= set_a.cbegin(); it != set_a.cend(); ++it)
   cout << ' ' << *it;
   cout << '\n';
   return 0;
}

ผลลัพธ์

หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -

set_a contains: 10 12 18 34 44