STL array访问元素

STL array访问元素教程

我们需要访问 STL 中的 array 的某个元素,我们可以使用数组下标的方式、使用 at 的方式、使用 data 函数和 get 四种方式。

STL array访问元素

语法

arr[index]

参数

参数 描述
arr 需要访问的数组。
index 数组的索引。

说明

可以通过 容器名 [] 的方式直接访问和使用容器中的元素,这和 C++ 标准数组访问元素的方式相同。

技术细节

需要注意的是,使用如上这样方式,由于没有做任何边界检查,所以即便使用越界的索引值去访问或存储元素,也不会被检测到。

STL array at访问元素

语法

arr.at(index)

参数

参数 描述
arr 需要访问的数组。
index 数组的索引。

说明

为了能够有效地避免越界访问的情况,可以使用 array 容器提供的 at() 成员函数。

技术细节

当传给 at() 的索引是一个越界值时,程序会抛出 std::out_of_range 异常。因此当需要访问容器中某个指定元素时,建议大家使用 at(),除非确定索引没有越界。

STL array get访问元素

语法

get<index>(arr)

参数

参数 描述
arr 需要访问的数组。
index 数组的索引。

说明

array 容器还提供了 get<n> 模板函数,它是一个辅助函数,能够获取到容器的第 n 个元素。

技术细节

该模板函数中,参数的实参必须是一个在编译时可以确定的常量表达式,所以它不能是一个循环变量。也就是说,它只能访问模板参数指定的元素,编译器在编译时会对它进行检查。

STL array data访问元素

语法

arr.data()

参数

参数 描述
arr 需要访问的数组。

说明

通过调用 data 函数可以得到指向容器首个元素的指针。通过该指针,我们可以获得容器中的各个元素。

案例

使用索引访问array元素

使用下标索引的形式访问 array 元素

#include <iostream> #include <array> using namespace std; int main() { cout << "嗨客网(www.haicoder.net)\n" << endl; array<string, 5> arr{"Hello", "World", "HaiCoder", "haicoder.net", "www.haicoder.net"}; cout << "Arr1 = " << arr[0] << endl; cout << "Arr2 = " << arr[1] << endl; cout << "Arr3 = " << arr[2] << endl; return 0; }

因为,这里需要使用 C++ 11,因此,我们在 Linux 下使用 g++ 进行编译,具体命令如下:

g++ array.cpp -std=c++11

编译后,我们直接运行生成的二进制文件 a.out,如下图所示:

07_C STL array访问元素.png

我们使用了下标索引的形式,访问了数组的元素,第一个元素下标是 0。

使用at访问array元素

使用 at 的形式访问 array 元素

#include <iostream> #include <array> using namespace std; int main() { cout << "嗨客网(www.haicoder.net)\n" << endl; array<string, 5> arr{"Hello", "World", "HaiCoder", "haicoder.net", "www.haicoder.net"}; cout << "Arr1 = " << arr.at(0) << endl; cout << "Arr2 = " << arr.at(1) << endl; cout << "Arr3 = " << arr.at(2) << endl; return 0; }

编译后,我们直接运行生成的二进制文件 a.out,如下图所示:

08_C STL array访问元素.png

我们使用了 at 的形式,访问了数组的元素,第一个元素下标是 0。

使用get访问array元素

使用 get 的形式访问 array 元素

#include <iostream> #include <array> using namespace std; int main() { cout << "嗨客网(www.haicoder.net)\n" << endl; array<string, 5> arr{"Hello", "World", "HaiCoder", "haicoder.net", "www.haicoder.net"}; cout << "Arr1 = " << get<0>(arr) << endl; cout << "Arr2 = " << get<1>(arr) << endl; cout << "Arr3 = " << get<2>(arr) << endl; return 0; }

编译后,我们直接运行生成的二进制文件 a.out,如下图所示:

09_C STL array访问元素.png

我们使用了 get 的形式,访问了数组的元素。

使用data访问array元素

使用 data 的形式访问 array 元素

#include <iostream>#include <array>using namespace std;int main(){ cout << "嗨客网(www.haicoder.net)\n" << endl; array<string, 5> arr{"Hello", "World", "HaiCoder", "haicoder.net", "www.haicoder.net"}; cout << "Arr1 = " << *(arr.data()) << endl; cout << "Arr2 = " << *(arr.data()+1) << endl; cout << "Arr3 = " << *(arr.data()+2) << endl; return 0; }

编译后,我们直接运行生成的二进制文件 a.out,如下图所示:

10_C STL array访问元素.png

通过 data 获取第一个元素,接着,使用指针移动的形式,访问其他元素。

STL array访问元素总结

我们需要访问 STL 中的 array 的某个元素,我们可以使用数组下标的方式、使用 at 的方式、使用 data 函数和 get 四种方式。