কম্পিউটার টিউটোরিয়াল

C++ STL ফাংশন রিটার্ন করা পয়েন্টার থেকে ইন্ডেক্স বের করা


সমস্যা

C++ STL ফাংশনগুলো (যেমন max_element) পয়েন্টার বা ইটারেটর রিটার্ন করে, ডায়রেক্ট ইন্ডেক্স নয়। কন্টেইনারের ভেতরে সেই এলিমেন্টের ইন্ডেক্স বের করতে হলে পয়েন্টার গাণিতিক বা 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 << 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

ব্যাখ্যা

  • max_element রিটার্ন করে ইটারেটর (পয়েন্টার-সদৃশ)।
  • vec.begin() হল প্রথম এলিমেন্টের ইটারেটর।
  • দুটি ইটারেটর বিয়োগ করলে বা distance() দিয়ে দূরত্ব (ইন্ডেক্স) পাওয়া যায়।
  • এটি র‍্যান্ডম-অ্যাক্সেস ইটারেটরের জন্য O(1), অন্যান্য জন্য O(n)।
  1. সি++ STL ব্যবহার করে অ্যারে প্যালিনড্রোম কিনা তা যাচাই করার প্রোগ্রাম

  2. C++-এ STL ব্যবহার করে BFS (কম্পিটিটিভ কোডিং için)

  3. C++ STL-এ accumulate দিয়ে অ্যারে প্রোডাক্ট বের করা

  4. C++ STL-এ কাস্টম অবজেক্টের ভেক্টর সোর্ট করা (Sorting Vector of Custom Objects)