C++ Deque::at() 函数



C++ 的std::deque::at() 函数用于根据元素的位置索引提供对元素的访问,允许进行读写操作。当需要进行精确的边界检查时,它对于访问 deque 中的元素非常有用。

与 operator[] 不同,at() 函数会验证索引是否在边界范围内,如果索引无效则抛出超出范围异常。

语法

以下是 std::deque::at() 函数的语法。

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

参数

  • n - 表示容器中元素的位置。

返回值

此函数返回容器中指定位置处的元素。

异常

如果 n 无效,则抛出超出范围异常。

时间复杂度

此函数的时间复杂度为常数,即 O(1)。

示例

让我们看下面的示例,我们将演示 at() 函数的基本用法。

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

输出

以上代码的输出如下:

Element at given index : C

示例

考虑以下示例,我们将修改元素。

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

输出

以下是以上代码的输出:

1 22 333 4444 

示例

在以下示例中,我们将访问超出范围的元素并观察输出。

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

输出

如果我们运行以上代码,它将生成以下输出:

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