C++ Deque::at() Function



The C++ std::deque::at() function is used to provide the access to the elements based on their position index, allowing both read and write operations. It is useful for accessing the element in the deque, when the exact boundary checking is necessary.

Unlike operator[], at() function validates the index against bounds and throws an out of range exception if the index is invalid.

Syntax

Following is the syntax for std::deque::at() function.

reference at (size_type n);
const_reference at (size_type n) const;

Parameters

  • n − It indicates the position of an element in the container.

Return value

This function returns the element at the specified position in the container.

Exceptions

It throws out of range exception if n is not valid.

Time complexity

The time complexity of this function is Constant i.e. O(1)

Example

Let's look at the following example, where we are going to demonstrate the basic usage of at() function.

#include <iostream>
#include <deque>
int main()
{
    std::deque<char> a = {'A', 'B', 'C', 'D'};
    char element = a.at(2);
    std::cout << "Element at given index : " << element << std::endl;
    return 0;
}

Output

Output of the above code is as follows −

Element at given index : C

Example

Consider the following example, where we are going to modify the element.

#include <iostream>
#include <deque>
int main()
{
    std::deque<int> a = {1,22,3,4444};
    a.at(2) = 333;
    for (int elem : a) {
        std::cout << elem << " ";
    }
    std::cout << std::endl;
    return 0;
}

Output

Following is the output of the above code −

1 22 333 4444 

Example

In the following example, we are going to access the element that is out of range and observing the output.

#include <iostream>
#include <deque>
int main()
{
    std::deque<char> a = {'A', 'B', 'C', 'D'};
    try {
        char element = a.at(6);
        std::cout << "Element at given index : " << element << std::endl;
    } catch (const std::out_of_range& oor) {
        std::cerr << "Out of Range error: " << oor.what() << std::endl;
    }
    return 0;
}

Output

If we run the above code it will generate the following output −

Out of Range error: deque::_M_range_check: __n (which is 6)>= this->size() (which is 4)
deque.htm
Advertisements