Skip to content
Related Articles

Related Articles

Improve Article
Print the element at a given index in a Set in C++
  • Last Updated : 25 Jun, 2020

Given a Set of integers sett and an integer index, the task is to find the element in the set which is present at index. If the index is beyond limits, then print “Invalid index”.

Examples:

Input: sett = {11, 44, 66, 72, 88, 99}, index = 2
Output: The element at index 2 is : 66
Explaination:
The element 66 is present in the set and it is present at index 2.

Input: sett = {11, 44, 66, 72, 88, 99}, index = 6
Output: Invalid index

Approach:



  1. Define a template getNthElement which find the index of particular element by using next() function.

    next() function returns an iterator pointing to the element after being advanced by certain number of positions. It is defined inside the header file.

  2. Using the next() function, getNthElement return a pair of boolean and integer values. The boolean value denotes if index is found the set or not. The integer value contains the integer stored at index in the set.
  3. If the boolean value is set true, which indicates index to be a vakid index, print the integer value stored in the pair. Otherwise print “Invalid index”.

Below is the implementation of the above approach:

C++




// C++ program to access a
// set element by its index
  
#include <bits/stdc++.h>
using namespace std;
  
// Generic template
template <typename T>
pair<T, bool> getNthElement(set<T>& searchSet,
                            int index)
{
    pair<T, bool> result;
  
    // Check if index is valid or not
    if (searchSet.size() > index) {
        result.first
            = *(std::next(
                searchSet.begin(),
                index));
        result.second = true;
    }
  
    else
        result.second = false;
  
    // Return the pair
    return result;
}
  
// Driver Program
int main()
{
    set<int> sett = { 11, 44, 66,
                      72, 88, 99 };
    int index = 2;
  
    pair<int, bool> result
        = getNthElement(
            sett, index);
  
    if (result.second)
        cout << "The element at index "
             << index << " is "
             << result.first;
    else
        cout << "Invalid index";
    return 0;
}
Output:
The element at index 2 is 66

Time Complexity: O(N)
Auxiliary Space: O(1)

Want to learn from the best curated videos and practice problems, check out the C++ Foundation Course for Basic to Advanced C++ and C++ STL Course for the language and STL. To complete your preparation from learning a language to DS Algo and many more, please refer Complete Interview Preparation Course.



My Personal Notes arrow_drop_up
Recommended Articles
Page :