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

map::at() และ map::swap() ใน C++ STL


ในบทความนี้ เราจะพูดถึงการทำงาน ไวยากรณ์และตัวอย่างของฟังก์ชัน map::at() และ map::swap() ใน C++ STL

แผนที่ใน C++ STL คืออะไร

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

แผนที่::at() คืออะไร

ฟังก์ชัน map::at() เป็นฟังก์ชัน inbuilt ใน C++ STL ซึ่งกำหนดไว้ในไฟล์ส่วนหัว at() ใช้เพื่อเข้าถึงองค์ประกอบเฉพาะของคอนเทนเนอร์แผนที่ที่เกี่ยวข้อง ฟังก์ชันนี้ส่งคืนการอ้างอิงไปยังค่าเฉพาะที่เกี่ยวข้องกับคีย์

หากมีกรณีที่คีย์ไม่ตรงกับคีย์ใดๆ ของคอนเทนเนอร์แผนที่ ฟังก์ชันจะส่งข้อยกเว้น out_of_range

ไวยากรณ์

map_name.at(key& k);

พารามิเตอร์

ฟังก์ชันยอมรับพารามิเตอร์หนึ่งตัว นั่นคือ

  • k − นี่คือกุญแจสำคัญที่เราต้องการกล่าวถึง

คืนค่า

ฟังก์ชันนี้ส่งคืนการอ้างอิงไปยังค่าที่เกี่ยวข้องกับคีย์ k ที่เรากำลังมองหา

ตัวอย่าง

อินพุต

std::map<int> mymap;
mymap.insert({‘a’, 10});
mymap.insert({‘b, 20});
mymap.insert({‘c, 30});
mymap.at(‘b’);

ผลลัพธ์

b:20

ตัวอย่าง

#include <bits/stdc++.h>
using namespace std;
int main() {
   map<int, int> TP_1;
   map<int, int> TP_2;
   TP_1[1] = 10;
   TP_1[2] = 20;
   TP_1[3] = 30;
   TP_1[4] = 40;
   TP_2[5] = 50;
   TP_2[6] = 60;
   TP_2[7] = 70;
   cout<<"Elements at TP_1[1] = "<< TP_1.at(1) << endl;
   cout<<"Elements at TP_1[2] = "<< TP_1.at(2) << endl;
   cout<<"Elements at TP_1[3] = "<< TP_1.at(3) << endl;
   cout<<"\nElements at TP_2[7] = "<< TP_2.at(7) << endl;
   cout<<"Elements at TP_2[5] = "<< TP_2.at(5) << endl;
   return 0;
}

ผลลัพธ์

Elements at TP_1[1] = 10
Elements at TP_1[2] = 20
Elements at TP_1[3] = 30
Elements at TP_1[7] = 70
Elements at TP_1[5] = 50

แผนที่::swap() คืออะไร

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

เมื่อฟังก์ชันนี้ถูกเรียก จะใช้พารามิเตอร์ซึ่งเป็นคอนเทนเนอร์แผนที่อื่นและสลับเนื้อหากับคอนเทนเนอร์ที่เกี่ยวข้อง

ไวยากรณ์

map_name.swap(map& map_name2);

พารามิเตอร์

ฟังก์ชันยอมรับพารามิเตอร์หนึ่งตัว นั่นคือ

  • map_name2 − นี่คือออบเจ็กต์ของคอนเทนเนอร์แผนที่อื่นที่มีข้อมูลที่เราต้องการสลับกับคอนเทนเนอร์แผนที่ที่เกี่ยวข้อง

คืนค่า

ฟังก์ชันนี้ไม่ส่งคืนสิ่งใด

ตัวอย่าง

อินพุต

std::map<int> odd, eve;
odd.insert({‘a’, 1});
odd.insert({‘b’, 3});
odd.insert({‘c’, 5});
eve.insert({‘d’, 2});
eve.insert({‘e’, 4});
eve.insert({‘f’, 6});
odd.swap(eve);

ผลลัพธ์

Odd: d: 2 e:4 f:6
Eve: a:1 b:3 c:5

ตัวอย่าง

#include <bits/stdc++.h>
using namespace std;
int main() {
   map<int, int> TP_1;
   map<int, int> TP_2;
   TP_1[1] = 10;
   TP_1[2] = 20;
   TP_1[3] = 30;
   TP_1[4] = 40;
   TP_2[5] = 50;
   TP_2[6] = 60;
   TP_2[7] = 70;
   swap(TP_1, TP_2);
   cout<<"Elements of TP_1 after swap:\n"<< "\tKEY\tELEMENT\n";
   for (auto i = TP_1.begin(); i!= TP_1.end(); i++) {
      cout << "\t" << i->first << "\t" << i->second << '\n';
   }
   cout << "Elements of TP_2 after swap:\n"<< "\tKEY\tELEMENT\n";
   for (auto i = TP_2.begin(); i!= TP_2.end(); i++) {
      cout << "\t" << i->first << "\t" << i->second << '\n';
   }
   return 0;
}

ผลลัพธ์

Elements of TP_1 after swap:
KEY    ELEMENT
5       50
6       60
7       70
Elements of TP_2 after swap:
KEY    ELEMENT
1       10
2       20
3       30
4       40