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

ดัชนีการคำนวณโดยใช้พอยน์เตอร์ที่ส่งคืนโดยฟังก์ชัน STL ใน C++


ในส่วนนี้ เราจะมาดูวิธีสร้างดัชนีโดยใช้พอยน์เตอร์ที่ส่งกลับโดย 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