ในส่วนนี้ เราจะมาดูวิธีสร้างดัชนีโดยใช้พอยน์เตอร์ที่ส่งกลับโดย STL ใน C++ ดังที่เราทราบฟังก์ชัน inbuilt จำนวนมากใน C ++ จะส่งคืนพอยน์เตอร์ไปยังตำแหน่งในหน่วยความจำซึ่งระบุที่อยู่ของหมายเลขที่ต้องการ แต่ไม่มีความสัมพันธ์กับดัชนีจริงในคอนเทนเนอร์ของค่าที่ส่งคืน ตัวอย่างเช่น ในการกำหนดองค์ประกอบสูงสุดในโค้ด เราใช้ฟังก์ชัน std::max_element() ซึ่งจะไม่ส่งคืนดัชนีขององค์ประกอบที่ต้องการ แต่จะส่งคืนที่อยู่ในหน่วยความจำ แต่บางครั้ง เราจำเป็นต้องได้รับดัชนีจากที่อยู่นั้น เราจะมาดูกันว่าเราจะสร้างดัชนีได้อย่างไร
การลบตัววนซ้ำแรก
จากเมธอด container.begin() เราจะได้ address ของตำแหน่งแรก ตอนนี้ลบที่อยู่เริ่มต้นออกจากที่อยู่ที่ส่งคืนเราจะได้ส่วนต่าง จากนั้นเราจะหาดัชนีได้
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
#include <bits/stdc++.h> using namespace std; int main(){ vector<int> vec = { 10, 40, 50, 60, 30}; cout << "Max element is : " << (*max_element(vec.begin(), vec.end())) << endl; cout << "The index of maximum element : "; cout << max_element(vec.begin(), vec.end()) - vec.begin(); }
ผลลัพธ์
Max element is : 60 The index of maximum element : 3
อีกวิธีในการค้นหาดัชนีคือใช้วิธี std::distance() เราจะใช้ตามด้านล่างนี้ −
ตัวอย่าง
#include <bits/stdc++.h> using namespace std; int main(){ vector<int< vec = { 10, 40, 50, 60, 30}; cout << "Max element is : " << (*max_element(vec.begin(), vec.end())) << endl; cout << "The index of maximum element : "; cout << distance(vec.begin(), max_element(vec.begin(), vec.end())); }
ผลลัพธ์
Max element is : 60 The index of maximum element : 3