วิธีวนซ้ำบนแผนที่ใน C++

How Iterate Over Map C



ในบทช่วยสอนสั้นๆ นี้ เราจะมาดูวิธีการวนซ้ำในแผนที่ใน C++

มีหลายวิธีในการวนซ้ำบนแผนที่ใน C ++ ด้วย C++ เวอร์ชันที่ใหม่กว่า มีวิธีขั้นสูงกว่าในการวนซ้ำบนแผนที่ใน C++







มาดูกันทีละคน



ใช้สำหรับวนซ้ำกับ stp::map

เราได้สร้างแผนที่ชื่อ |_+_| และใส่คู่คีย์-ค่าเข้าไป



<สำหรับ>
#รวม
#รวม
#รวม
#รวม
#รวม
โดยใช้ เนมสเปซชั่วโมง;
intหลัก() {
// เริ่มต้นแผนที่
แผนที่>'อินเดีย','เดลี'));
ประเทศCapitalMap.แทรก(คู่<สตริง, สตริง>('เนปาล','กาฐมาณฑุ'));
ประเทศCapitalMap.แทรก(คู่<สตริง, สตริง>('จีน','ปักกิ่ง'));
ประเทศCapitalMap.แทรก(คู่<สตริง, สตริง>('ฝรั่งเศส','ปารีส'));

// วนซ้ำโดยใช้ iterator in for loop
สำหรับ (รถยนต์itr=ประเทศCapitalMap.เริ่ม();itr!=ประเทศCapitalMap.จบ();itr++)
{
ชั่วโมง::ค่าใช้จ่าย <<itr->แรก// คีย์การเข้าถึง
<< ':'
<<itr->ที่สอง// ค่าการเข้าถึง
<<ชั่วโมง::endl;
}
กลับ 0;
}
</สำหรับ>
เอาท์พุต:
<สำหรับ>
จีน:ปักกิ่ง
ฝรั่งเศส:ปารีส
อินเดีย:เดลี
เนปาล:กาฐมาณฑุ
</สำหรับ>

อย่างที่คุณเห็น เราได้พิมพ์ country:capital(key:value) โดยใช้ for loop





หากคุณสังเกตเห็น เราใช้ |_+_| type specifier สำหรับ map iterator เนื่องจากสามารถอ่านได้ คุณสามารถใช้ |_+_| อย่างชัดเจนอีกด้วย
บันทึก: หากคุณเห็นผลลัพธ์ จะมีการจัดเรียงตามคีย์ในลำดับจากน้อยไปมาก นี่เป็นเพราะ std::map เป็นคอนเทนเนอร์ที่เชื่อมโยงที่จัดเรียงพร้อมตัวเปรียบเทียบที่ให้มา (เวอร์ชัน C++11 เป็นต้นไป) เนื่องจากเราไม่ได้จัดเตรียมตัวเปรียบเทียบใดๆ ดังนั้น C++ จึงใช้ตัวเปรียบเทียบเริ่มต้นสำหรับสตริง

การใช้ while loop กับ stp::map

เรายังสามารถใช้ while loop แทน for loop



<สำหรับ>
#รวม
#รวม
#รวม
#include >
โดยใช้ เนมสเปซชั่วโมง;
intหลัก() {
// เริ่มต้นแผนที่
แผนที่<สตริง, สตริง>ประเทศเมืองหลวงแผนที่;
// แทรกองค์ประกอบต่าง ๆ ในแผนที่
ประเทศCapitalMap.แทรก(คู่<สตริง, สตริง>('อินเดีย','เดลี'));
ประเทศCapitalMap.แทรก(คู่<สตริง, สตริง>('เนปาล','กาฐมาณฑุ'));
ประเทศCapitalMap.แทรก(คู่<สตริง, สตริง>('จีน','ปักกิ่ง'));
ประเทศCapitalMap.แทรก(คู่<สตริง, สตริง>('ฝรั่งเศส','ปารีส'));


// สร้างตัววนซ้ำสำหรับแผนที่และเริ่มต้นด้วยการเริ่มต้น
รถยนต์itr=ประเทศCapitalMap.เริ่ม();
// วนซ้ำโดยใช้ iterator ใน while loop
ในขณะที่ (itr!=ประเทศCapitalMap.จบ())
{
ชั่วโมง::ค่าใช้จ่าย <<itr->แรก// คีย์การเข้าถึง
<< ':'
<<itr->ที่สอง// ค่าการเข้าถึง
<<ชั่วโมง::endl;
itr++;
}
กลับ 0;
}
</สำหรับ>
เอาท์พุต:
<สำหรับ>
จีน:ปักกิ่ง
ฝรั่งเศส:ปารีส
อินเดีย:เดลี
เนปาล:กาฐมาณฑุ
</สำหรับ>

การใช้ Range based for loop (เวอร์ชัน C++11 เป็นต้นไป)

หากคุณใช้เวอร์ชัน C++11 นี่เป็นวิธีที่ยอดเยี่ยมที่สุดในการวนซ้ำบนแผนที่ใน C++ คุณสามารถหลีกเลี่ยงลูปคิวบ์แบบเดิมและใช้สิ่งนี้แทนได้

<สำหรับ>
#รวม
#รวม
#รวม

โดยใช้ เนมสเปซชั่วโมง;
intหลัก() {
// เริ่มต้นแผนที่
แผนที่<สตริง, สตริง>ประเทศเมืองหลวงแผนที่;
// แทรกองค์ประกอบต่าง ๆ ในแผนที่
ประเทศCapitalMap.แทรก(คู่<สตริง, สตริง>('อินเดีย','เดลี'));
ประเทศCapitalMap.แทรก(คู่<สตริง, สตริง>('เนปาล','กาฐมาณฑุ'));
ประเทศCapitalMap.แทรก(คู่<สตริง, สตริง>('จีน','ปักกิ่ง'));
ประเทศCapitalMap.แทรก(คู่<สตริง, สตริง>('ฝรั่งเศส','ปารีส'));


// วนซ้ำโดยใช้ iterator in for loop
สำหรับ (const รถยนต์ &เขา:ประเทศเมืองหลวงแผนที่) {
ค่าใช้จ่าย <<เขา.แรก << ':' <<เขา.ที่สอง<<'NS';
}

กลับ 0;
}
</สำหรับ>
เอาท์พุต:
จีน:ปักกิ่ง
ฝรั่งเศส:ปารีส
อินเดีย:เดลี
เนปาล:กาฐมาณฑุ

การใช้ range-based for loop กับคู่คีย์-ค่า (เวอร์ชัน C++17 เป็นต้นไป)

เวอร์ชันนี้รองรับตั้งแต่ c++17 เป็นต้นไป และให้วิธีที่ยืดหยุ่นกว่าในการวนซ้ำบนแผนที่ คุณสามารถเข้าถึงคู่ของคีย์-ค่าได้อย่างชัดเจนในแผนที่ซึ่งให้โซลูชันที่อ่านง่ายยิ่งขึ้น

<สำหรับ>
#รวม
#รวม
#รวม

โดยใช้ เนมสเปซชั่วโมง;
intหลัก() {
// เริ่มต้นแผนที่
แผนที่<สตริง, สตริง>ประเทศเมืองหลวงแผนที่;
// แทรกองค์ประกอบต่าง ๆ ในแผนที่
ประเทศCapitalMap.แทรก(คู่<สตริง, สตริง>('อินเดีย','เดลี'));
ประเทศCapitalMap.แทรก(คู่<สตริง, สตริง>('เนปาล','กาฐมาณฑุ'));
ประเทศCapitalMap.แทรก(คู่<สตริง, สตริง>('จีน','ปักกิ่ง'));
ประเทศCapitalMap.แทรก(คู่<สตริง, สตริง>('ฝรั่งเศส','ปารีส'));


// วนซ้ำโดยใช้ iterator in for loop
สำหรับ (const รถยนต์& [คีย์ ค่า] :ประเทศเมืองหลวงแผนที่) {
ค่าใช้จ่าย <<กุญแจ<< ':' <<ค่า<< 'NS';
}

กลับ 0;
}
</สำหรับ>
เอาท์พุต:
จีน:ปักกิ่ง
ฝรั่งเศส:ปารีส
อินเดีย:เดลี
เนปาล:กาฐมาณฑุ

นั่นคือทั้งหมดเกี่ยวกับวิธีการวนซ้ำบนแผนที่ใน C ++ มีความสุขในการเข้ารหัส!