在 C++ STL 中的deque::at() 和 deque::swap()

在 C++ STL 中的deque::at() 和 deque::swap()

C++ STL(Standard Template Library)是C++标准程序库中的一个重要组成部分,它包含了许多通用的数据结构和算法模板。其中两个常用的deque函数是deque::at()和deque::swap()。 通过本文来深入了解这两个函数。

deque::at()

deque是一种容器,其功能类似于 vector,即动态数组,但是可以从前面或后面插入或删除元素。 然而,与vector不同,deque不仅具有随机存取迭代器,还具有双向迭代器,即可以从前向后或从后向前遍历它的元素。这就是deque的优点之一。

在deque中,使用at()函数来访问指定位置的元素。 以下是at()函数的语法及示例代码:

// 语法
reference at(size_type n)
const_reference at(size_type n) const;

// 示例代码
#include <iostream>
#include <deque>
using namespace std;

int main(){
    deque<int> myDeque {1,2,3,4,5};

    cout << "Value at position 3 is: " << myDeque.at(3) << endl;

    // 访问deque之外的位置
    try{
        cout << "Value at position 10 is: " << myDeque.at(10) << endl;
    }
    catch (const std::out_of_range& oor){
        std::cerr << "Out of range error: " << oor.what() << endl;
    }

    return 0;
}

在这个例子中,我们首先创建了一个有5个元素的deque对象。然后我们使用at()函数来访问在第三个位置上的元素。 接下来,我们使用at()函数来访问deque之外的位置,即我们的deque仅包含5个元素,但我们尝试访问第10个位置上的元素。 由于该元素不存在,它将引发一个out_of_range异常,并输出相应的错误消息。

deque::swap()

我们已经了解了deque::at(),现在来了解另一个有用的deque函数 deque::swap()。 deque::swap()用于交换两个deque对象之间的内容。以下是swap()函数的语法及示例代码:

// 语法
void swap(deque& x);
template<class T, class Alloc>
void swap(deque<T,Alloc>& x, deque<T,Alloc>& y);

// 示例代码
#include <iostream>
#include <deque>
using namespace std;

int main(){
    deque<int> dequeOne {1, 2, 3};
    deque<int> dequeTwo {4, 5};

    cout<<"Original deques: \n";
    cout<<"Deque One: ";
    for (auto i : dequeOne) cout << i << " ";
    cout << endl;

    cout<<"Deque Two: ";
    for (auto i : dequeTwo) cout << i << " ";
    cout << endl;

    dequeOne.swap(dequeTwo);

    cout << "\nDeques after swap(): \n";
    cout<<"Deque One: ";
    for (auto i : dequeOne) cout << i << " ";
    cout << endl;

    cout<<"Deque Two: ";
    for (auto i : dequeTwo) cout << i << " ";
    cout << endl;

    return 0;
}

在上面的代码中,我们首先创建了两个deque对象dequeOne和dequeTwo,并在每个deque对象中分别插入了几个整数。 然后我们使用swap()函数交换了两个deque对象中的元素。显然,dequeOne中的所有元素都移到了dequeTwo中,反之亦然。

结论

在本文中,我们介绍了deque::at()和deque::swap()这两个有用的deque函数。使用at()函数可以方便地访问一个deque容器中的指定元素,并且在访问不属于deque容器范围的位置时,它会抛出一个异常。而使用swap()函数可以交换两个deque容器中的内容,从而实现快速有效的容器操作。这两个函数都能使我们更加方便地操作deque容器,并提高代码的效率和可读性。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程