STL 中的 deque 容器的访问可以使用下标索引的形式、使用 at 的形式、使用 front 和 back 来分别访问第一个元素和最后一个元素、还可以使用 begin 和 end 来访问元素。
deq[index]
参数 | 描述 |
---|---|
deq | 需要访问的队列。 |
index | 队列的索引。 |
可以通过 容器名 []
的方式直接访问和使用容器中的元素,这和 C++ 标准容器访问元素的方式相同。
需要注意的是,使用如上这样方式,由于没有做任何边界检查,所以即便使用越界的索引值去访问或存储元素,也不会被检测到。
deq.at(index)
参数 | 描述 |
---|---|
deq | 需要访问的队列。 |
index | 队列的索引。 |
为了能够有效地避免越界访问的情况,可以使用 deque 容器提供的 at() 成员函数。
当传给 at() 的索引是一个越界值时,程序会抛出 std::out_of_range 异常。因此当需要访问容器中某个指定元素时,建议大家使用 at(),除非确定索引没有越界。
deq.front() deq.back()
参数 | 描述 |
---|---|
deq | 需要访问的队列。 |
通过使用 front 可以访问第一个元素、使用 back 访问最后一个元素。
deq.begin() deq.end()
参数 | 描述 |
---|---|
deq | 需要访问的队列。 |
通过使用 begin 可以访问第一个元素、使用 end 访问最后一个元素。
使用下标索引的形式访问 deque 元素
#include <iostream>
#include <deque>
using namespace std;
int main()
{
cout << "嗨客网(www.haicoder.net)\n" << endl;
deque<string> deq{"Hello", "World", "HaiCoder", "haicoder.net", "www.haicoder.net"};
cout << "deq1 = " << deq[0] << endl;
cout << "deq2 = " << deq[1] << endl;
cout << "deq3 = " << deq[2] << endl;
return 0;
}
因为,这里需要使用 C++ 11,因此,我们在 Linux 下使用 g++ 进行编译,具体命令如下:
g++ vector.cpp -std=c++11
编译后,我们直接运行生成的二进制文件 a.out
,如下图所示:
我们使用了下标索引的形式,访问了 deque 的元素,第一个元素下标是 0。
使用 at 的形式访问 deque 元素
#include <iostream>
#include <deque>
using namespace std;
int main()
{
cout << "嗨客网(www.haicoder.net)\n" << endl;
deque<string> deq{"Hello", "World", "HaiCoder", "haicoder.net", "www.haicoder.net"};
cout << "deq1 = " << deq.at(0) << endl;
cout << "deq2 = " << deq.at(1) << endl;
cout << "deq3 = " << deq.at(2) << endl;
return 0;
}
编译后,我们直接运行生成的二进制文件 a.out
,如下图所示:
我们使用了 at 的形式,访问了队列的元素,第一个元素下标是 0。
使用 front 访问 deque 第一个元素使用 back 访问 deque 最后一个元素
#include <iostream>
#include <deque>
using namespace std;
int main()
{
cout << "嗨客网(www.haicoder.net)\n" << endl;
deque<string> deq{"Hello", "World", "HaiCoder", "haicoder.net", "www.haicoder.net"};
cout << "deq1 = " << deq.front() << endl;
cout << "deq2 = " << deq.back() << endl;
return 0;
}
编译后,我们直接运行生成的二进制文件 a.out
,如下图所示:
通过 front 获取第一个元素,接着,通过 back 获取最后一个元素。
使用 front 访问 deque 第一个元素使用 back 访问 deque 最后一个元素
#include <iostream>#include <deque>using namespace std;int main(){ cout << "嗨客网(www.haicoder.net)\n" << endl; deque<string> deq{"Hello", "World", "HaiCoder", "haicoder.net", "www.haicoder.net"}; auto first = deq.begin() + 1; auto end = deq.end() - 1; while ( first != end ) { cout << *first++ << " "; } cout << endl; return 0; }
编译后,我们直接运行生成的二进制文件 a.out
,如下图所示:
通过 begin 获取第一个元素,接着,通过 end 获取最后一个元素。
STL 中的 deque 容器的访问可以使用下标索引的形式、使用 at 的形式、使用 front 和 back 来分别访问第一个元素和最后一个元素、还可以使用 begin 和 end 来访问元素。