ไลบรารี C++ STL ให้คลาสแผนที่แก่เรา แผนที่ถือเป็นคอนเทนเนอร์ที่เชื่อมโยงกันซึ่งเก็บอ็อบเจ็กต์ไว้ในคู่ของค่าคีย์ที่เรียงลำดับและค่าที่แมป ไม่สามารถมีค่าที่แมปสองค่าที่มีค่าคีย์เดียวกันได้ คลาสแผนที่มีฟังก์ชันมากมาย แต่ที่นี่เราจะพูดถึง map.at() การทำงาน. องค์ประกอบที่แมปกับค่าคีย์จะถูกส่งผ่านเป็นพารามิเตอร์ของฟังก์ชันที่อ้างอิงโดยใช้ map.at() การทำงาน. เมื่อเราพยายามเข้าถึงองค์ประกอบที่ไม่อยู่ในช่วงของคอนเทนเนอร์ map.at() ฟังก์ชั่นประเมินช่วงของคอนเทนเนอร์และส่งข้อยกเว้น
ไวยากรณ์ของ map.at() Function
เราจำเป็นต้องปฏิบัติตามไวยากรณ์ด้านล่างเพื่อใช้ฟังก์ชัน map.at() ใน C++
Map_variable.at ( กุญแจ / คู่ค่า )
เราได้ใช้วัตถุแผนที่ซึ่งมีชื่อว่า “Map_variable” ด้วยเครื่องหมาย ที่() การทำงาน. ส่งคืนองค์ประกอบที่อ้างอิงโดยตรงและชี้ไปที่ค่าคีย์ที่ระบุ แผนผังคีย์ข้อมูลส่วนใหญ่ขึ้นอยู่กับช่วงของแผนที่ หากไม่เป็นเช่นนั้น มีความเป็นไปได้ที่ข้อยกเว้นหรือข้อผิดพลาดจะถูกส่งกลับในเวลาดำเนินการซึ่งแสดงว่าค่านั้นอยู่นอกเหนือช่วงที่กำหนดไว้ ตอนนี้ เราจะใช้ไวยากรณ์นี้ในรหัส C++ เพื่อแสดงว่ามันใช้งานได้
ตัวอย่างที่ 1: การใช้ฟังก์ชัน map.at()
โปรแกรมถูกนำมาใช้เพื่อแสดงฟังก์ชั่น map.at เราได้เชื่อมโยง ที่() ทำงานด้วย แผนที่() ฟังก์ชันที่รับค่าอินพุตบางส่วนและแสดงฟังก์ชันการทำงาน สำหรับสิ่งนี้ เราได้กรอกส่วนหัวของโปรแกรมโดยการนำเข้าโมดูลแผนที่ด้วยโมดูลอื่นที่จำเป็นสำหรับ c++ จากนั้นเราก็เรียก หลัก() ฟังก์ชันสำหรับการประกาศแผนที่จากคลาสแผนที่ วัตถุของแผนที่มีป้ายกำกับว่า 'MyMap' เราสร้างรายการแผนที่โดยระบุคีย์และค่าของแผนที่
หลังจากนี้เราเรียก map.at() ฟังก์ชันที่แม็พสตริงที่ระบุเป็นจำนวนเต็ม จากนั้นเราพิมพ์ผลลัพธ์จาก map.at() ฟังก์ชันจากลูป for for loop ใช้การอ้างอิงคำหลัก 'อัตโนมัติ' คีย์เวิร์ดอัตโนมัติระบุว่าตัวเริ่มต้นจะลบประเภทของตัวแปรออกจากตัวแปรที่ประกาศโดยอัตโนมัติ คำสั่ง cout จะพิมพ์คู่ตามลำดับที่ส่งคืนจาก map.at() การทำงาน.
#include#include
#include
int หลัก ( )
std: :map < std::string,int > MyMap = {
{ 'แอปเปิ้ล', 0 } ,
{ 'องุ่น' , 0 } ,
{ 'มะม่วงหลายลูก' , 0 } }
MyMap.at ( 'แอปเปิ้ล' ) = 5 ;
MyMap.at ( 'องุ่น' ) = 10 ;
MyMap.at ( 'มะม่วงหลายลูก' ) = 6 ;
สำหรับ ( รถยนต์ & m: MyMap ) {
std::cout << ม.เฟิร์ส << ': ' << ม.วินาที << '\n' ; }
< แข็งแกร่ง > กลับ 0 ;
}
ตอนนี้ เราได้ผลลัพธ์จากโปรแกรมด้านบนที่ใช้ map.at() การทำงาน. จำนวนเต็มที่ระบุทั้งหมดซึ่งอยู่ในช่วงจะแสดงเทียบกับแต่ละสตริง
ตัวอย่างที่ 2: การใช้ฟังก์ชัน map.at() สำหรับ out_of_range Exception
เราได้พูดคุยกันผ่านโปรแกรมตัวอย่างการใช้ map.at ฟังก์ชันในภาษา C++ ตอนนี้เราได้ดำเนินการอื่น map.at ในโปรแกรม แต่คราวนี้จะส่งคืนค่าที่แสดงภายในแผนที่และข้อยกเว้น out_of_range เมื่อไม่ได้ระบุคีย์ เนื่องจากเราต้องใช้ map.at ดังนั้นเราจึงได้เพิ่มโมดูลแผนที่ในส่วนหัว จากนั้น เราได้กำหนดฟังก์ชันหลักที่ส่ง 'โมฆะ' เป็นพารามิเตอร์
ภายในฟังก์ชันหลัก เราได้เริ่มต้นตัวสร้างรายการโดยการสร้างวัตถุแผนที่เป็น 'm1' รายการแผนที่มีสตริงของคีย์และค่าจำนวนเต็มต่างกัน จากนั้นเราพิมพ์คีย์ 'i' โดยส่งผ่าน map.at การทำงาน. เราใช้บล็อกดักจับ ในบล็อกการลอง เราได้นำเสนอคีย์ที่ไม่มีอยู่ในตัว map.at การทำงาน. เนื่องจากคีย์อยู่นอกช่วง ดังนั้นบล็อกการลองจะทำให้เกิดข้อผิดพลาด
#include#include
ใช้เนมสเปซ std;
int หลัก ( โมฆะ ) {
แผนที่ < ถ่าน int > ม1 = {
{ ฉัน , 1 } ,
{ 'ผม' , สอง } ,
{ 'n' , 3 } ,
{ 'ใน' , 4 } ,
{ 'เอ็กซ์' , 5 } ,
} ;
ศาล << 'ค่าคีย์แผนที่ m1['i'] = ' << m1.at ( 'ผม' ) << ปลาย;
ลอง {
m1.at ( 'ย' ) ;
} จับ ( ค่าคงที่ out_of_range & และ ) {
cerr << 'ข้อผิดพลาดที่' << e.อะไร ( ) << จบ;
}
กลับ 0 ;
}
เราสามารถเห็นภาพจากหน้าจอเอาต์พุตที่ map.at() ฟังก์ชันจะคืนค่าคีย์ที่มีอยู่ในแผนที่เท่านั้น คีย์ที่อยู่นอกช่วงจะโยนข้อผิดพลาดเมื่อข้อผิดพลาดปรากฏขึ้นเมื่อเราส่งคีย์ 'y' ใน map.at การทำงาน.
ตัวอย่างที่ 3: การใช้ฟังก์ชัน map.at() สำหรับการเข้าถึงองค์ประกอบ
องค์ประกอบสามารถเข้าถึงได้โดยใช้องค์ประกอบที่ระบุของตัวเลขจากฟังก์ชัน map.at มาปรับใช้โปรแกรมนี้เพื่อบรรลุคำสั่งข้างต้น เราได้กำหนดโมดูลแผนที่เป็นอันดับแรกในส่วนหัวเนื่องจากจำเป็นสำหรับการเข้าถึง map.at การทำงาน. จากนั้น เรามีฟังก์ชันหลักที่คลาสแผนที่เริ่มต้นวัตถุแผนที่เป็น 'แผนที่' ด้วยอ็อบเจ็กต์ 'แผนที่' นี้ เราได้สร้างคีย์ของสตริงและกำหนดค่าของตัวเลขให้กับคีย์เหล่านั้น หลังจากนั้นเราก็เรียก map.at ฟังก์ชันที่มีคำสั่ง cout และส่งผ่านคีย์ 'ตัวอย่าง' เป็นอินพุต
#include#include
#include
ใช้เนมสเปซ std;
int หลัก ( )
{
แผนที่ < สตริง int > แผนที่;
แผนที่ [ 'ของฉัน' ] = 1 ;
แผนที่ [ 'ค++' ] = สอง ;
แผนที่ [ 'แผนที่' ] = 3 ;
แผนที่ [ 'ตัวอย่าง' ] = 4 ;
ศาล << Map.at ( 'ตัวอย่าง' ) ;
กลับ 0 ;
}
องค์ประกอบหลักจะถูกส่งคืนเทียบกับคีย์ที่ระบุใน map.at การทำงาน. ผลลัพธ์จะให้ค่า '4' เนื่องจากตัวเลขนี้ถูกกำหนดให้กับองค์ประกอบหลัก 'ตัวอย่าง' ของแผนที่
ตัวอย่างที่ 4: การใช้ฟังก์ชัน map.at() เพื่อแก้ไของค์ประกอบ
ลองพิจารณาตัวอย่างง่ายๆ ของการปรับเปลี่ยนค่าที่เกี่ยวข้องกับค่าคีย์ เราได้สร้างรายการแผนที่โดยเรียกคลาสแผนที่และสร้างวัตถุ 'M1' เราได้กำหนดค่าสตริงให้กับแต่ละคีย์ของแผนที่ จากนั้นเราต้องใช้ map.at การทำงาน. ใน map.at เราได้ใช้คีย์ที่ระบุและกำหนดค่าสตริงใหม่ให้กับคีย์เหล่านั้น ตอนนี้ ค่าเหล่านี้จะถูกแก้ไขด้วยค่าก่อนหน้า ด้วยความช่วยเหลือของ for loop เราได้ทำซ้ำแต่ละองค์ประกอบจากแผนที่และแสดงเป็นผลลัพธ์
#include#include
#include
ใช้เนมสเปซ std;
int หลัก ( )
{
แผนที่ < int,สตริง > M1 = {
{ 10 , 'ค++' } ,
{ ยี่สิบ , 'จาวา' } ,
{ 30 , 'หลาม' } ,
{ 40 , 'คม' } ,
{ ห้าสิบ , 'เปิด' } } ;
M1.at ( ยี่สิบ ) = 'เทนเซอร์โฟลว์' ;
M1.at ( 30 ) = 'ลินุกซ์' ;
M1.at ( ห้าสิบ ) = 'สกาล่า' ;
ศาล << ' \n องค์ประกอบ:' << ปลาย;
สำหรับ ( รถยนต์ & x: M1 ) {
ศาล << x.แรก << ': ' << x.วินาที << '\n' ;
}
กลับ 0 ;
}
ขอให้สังเกตว่าค่าที่ได้รับเป็นเอาต์พุตได้แก้ไขค่าสตริงที่กำหนดใหม่ใน map.at การทำงาน. ค่าที่อัปเดตจะแสดงในสแนปชอตด้านล่าง
บทสรุป
บทความเกี่ยวกับฟังก์ชัน map.at เราได้จัดเตรียมฟังก์ชันของฟังก์ชัน map.at() ผ่านไวยากรณ์ และตัวอย่างนี้ใช้กับคอมไพเลอร์ C++ ฟังก์ชัน map.at() มีประโยชน์อย่างมาก เนื่องจากช่วยให้เข้าถึงองค์ประกอบได้ และส่งคืนข้อยกเว้นหรือข้อผิดพลาดที่ชัดเจนซึ่งอธิบายสถานการณ์ที่เกิดขึ้นเมื่อมีการเรียกใช้เมธอด นอกจากนี้ เราสามารถกำหนดค่าใหม่ให้กับคีย์ที่มีอยู่ผ่านฟังก์ชัน map.at