Print the element at a given index in a Set in C++

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++

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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;
}

chevron_right


Output:

The element at index 2 is 66

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




My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.


Article Tags :

1


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.