STL 中的 vector 容器的访问可以使用下标索引的形式、使用 at 的形式、使用 data 的形式,还可以使用 front 和 back 来分别访问第一个元素和最后一个元素。
vec[index]
参数 | 描述 |
---|---|
vec | 需要访问的数组。 |
index | 数组的索引。 |
可以通过 容器名 []
的方式直接访问和使用容器中的元素,这和 C++ 标准数组访问元素的方式相同。
需要注意的是,使用如上这样方式,由于没有做任何边界检查,所以即便使用越界的索引值去访问或存储元素,也不会被检测到。
vec.at(index)
参数 | 描述 |
---|---|
vec | 需要访问的数组。 |
index | 数组的索引。 |
为了能够有效地避免越界访问的情况,可以使用 vector 容器提供的 at() 成员函数。
当传给 at() 的索引是一个越界值时,程序会抛出 std::out_of_range 异常。因此当需要访问容器中某个指定元素时,建议大家使用 at(),除非确定索引没有越界。
vec.data()
参数 | 描述 |
---|---|
vec | 需要访问的数组。 |
通过调用 data 函数可以得到指向容器首个元素的指针。通过该指针,我们可以获得容器中的各个元素。
vec.front() vec.back()
参数 | 描述 |
---|---|
vec | 需要访问的数组。 |
通过使用 front 可以访问第一个元素、使用 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[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
,如下图所示:
我们使用了下标索引的形式,访问了 vector 的元素,第一个元素下标是 0。
使用 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
,如下图所示:
我们使用了 at 的形式,访问了数组的元素,第一个元素下标是 0。
使用 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
,如下图所示:
通过 data 获取第一个元素,接着,使用指针移动的形式,访问其他元素。
使用 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
,如下图所示:
通过 front 获取第一个元素,接着,通过 back 获取最后一个元素。
STL 中的 vector 容器的访问可以使用下标索引的形式、使用 at 的形式、使用 data 的形式,还可以使用 front 和 back 来分别访问第一个元素和最后一个元素。