সমস্যা
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)।