STL vector访问元素

STL vector访问元素教程

STL 中的 vector 容器的访问可以使用下标索引的形式、使用 at 的形式、使用 data 的形式,还可以使用 front 和 back 来分别访问第一个元素和最后一个元素。

STL vector访问元素

语法

vec[index]

参数

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

说明

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

技术细节

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

STL vector at访问元素

语法

vec.at(index)

参数

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

说明

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

技术细节

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

STL vector data访问元素

语法

vec.data()

参数

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

说明

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

STL vector front和back访问元素

语法

vec.front() vec.back()

参数

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

说明

通过使用 front 可以访问第一个元素、使用 back 访问最后一个元素。

案例

使用索引访问vector元素

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

#include <iostream> #include <vector> using namespace std; int main() { cout << "嗨客网(www.haicoder.net)\n" << endl; vector<string> vec{"Hello", "World", "HaiCoder", "haicoder.net", "www.haicoder.net"}; cout << "vec1 = " << vec[0] << endl; cout << "vec2 = " << vec[1] << endl; cout << "vec3 = " << vec[2] << endl; return 0; }

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

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

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

23_C STL vector访问元素.png

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

使用at访问vector元素

使用 at 的形式访问 vector 元素

#include <iostream> #include <vector> using namespace std; int main() { cout << "嗨客网(www.haicoder.net)\n" << endl; vector<string> vec{"Hello", "World", "HaiCoder", "haicoder.net", "www.haicoder.net"}; cout << "vec1 = " << vec.at(0) << endl; cout << "vec2 = " << vec.at(1) << endl; cout << "vec3 = " << vec.at(2) << endl; return 0; }

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

24_C STL vector访问元素.png

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

使用data访问vector元素

使用 data 的形式访问 vector 元素

#include <iostream> #include <vector> using namespace std; int main() { cout << "嗨客网(www.haicoder.net)\n" << endl; vector<string> vec{"Hello", "World", "HaiCoder", "haicoder.net", "www.haicoder.net"}; cout << "vec1 = " << *(vec.data()) << endl; cout << "vec2 = " << *(vec.data()+1) << endl; cout << "vec3 = " << *(vec.data()+2) << endl; return 0; }

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

25_C STL vector访问元素.png

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

使用front和back访问vector元素

使用 front 访问 vector 第一个元素使用 back 访问 vector 最后一个元素

#include <iostream>#include <vector>using namespace std;int main(){ cout << "嗨客网(www.haicoder.net)\n" << endl; vector<string> vec{"Hello", "World", "HaiCoder", "haicoder.net", "www.haicoder.net"}; cout << "vec1 = " << vec.front() << endl; cout << "vec2 = " << vec.back() << endl; return 0; }

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

26_C STL vector访问元素.png

通过 front 获取第一个元素,接着,通过 back 获取最后一个元素。

STL vector访问元素总结

STL 中的 vector 容器的访问可以使用下标索引的形式、使用 at 的形式、使用 data 的形式,还可以使用 front 和 back 来分别访问第一个元素和最后一个元素。