এই বিভাগে আমরা C++ এ STL দ্বারা ফেরত দেওয়া পয়েন্টার ব্যবহার করে কীভাবে সূচক তৈরি করতে হয় তা দেখব। যেমন আমরা জানি C++-এ অনেক ইনবিল্ট ফাংশন পয়েন্টারকে মেমরির অবস্থানে ফিরিয়ে দেয় যা কাঙ্খিত সংখ্যার ঠিকানা প্রদান করে, কিন্তু রিটার্ন করা মানের পাত্রে প্রকৃত সূচকের সাথে এর কোনো সম্পর্ক নেই। একটি উদাহরণ হিসাবে, একটি কোডে সর্বাধিক উপাদান নির্ধারণ করতে, আমরা std::max_element() ফাংশন ব্যবহার করি, এটি পছন্দসই উপাদানের সূচী প্রদান করে না, তবে মেমরিতে ঠিকানাটি ফেরত দেয়। কিন্তু কখনও কখনও, আমাদের সেই ঠিকানা থেকে সূচক পেতে হবে। এখানে আমরা দেখব কিভাবে আমরা সূচক তৈরি করতে পারি।
প্রথম পুনরাবৃত্তিকারীর বিয়োগ
container.begin() পদ্ধতি থেকে আমরা প্রথম অবস্থানের ঠিকানা পাব। এখন ফিরে আসা ঠিকানা থেকে শুরুর ঠিকানা বিয়োগ করলে আমরা পার্থক্য পেতে পারি। সেখান থেকে আমরা সূচকটি খুঁজে পেতে পারি।
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
#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