vector at用法
时间: 2023-11-02 18:03:22 浏览: 54
vector 是 C++ STL 中的一个动态数组容器,可以自动调整大小,而 vector 的 at 方法是用于访问 vector 中指定位置的元素。
vector 的 at 方法的语法如下:
```cpp
vector_name.at(index)
```
其中,`vector_name` 是指向 vector 对象的指针或引用,`index` 是要访问元素的下标。
at 方法与 [] 运算符类似,都可以用于访问 vector 中的元素,但 at 方法与 [] 运算符有一些不同之处:
- at 方法会进行边界检查,如果访问位置超出了 vector 的范围,会抛出 `std::out_of_range` 异常,而 [] 运算符不会进行边界检查,访问超出范围的位置会导致未定义行为。
- at 方法的返回值是一个对元素的引用,可以用于修改元素的值,而 [] 运算符的返回值是元素本身的值,不能用于修改元素。
因此,在需要保证访问安全性的情况下,建议使用 at 方法来访问 vector 中的元素。
相关问题
vector.at用法
vector.at是C++中vector容器的一个成员函数,可以通过索引访问vector中的元素,并且会进行边界检查。如果索引超出范围,会抛出一个std::out_of_range异常。示例代码如下:
```cpp
#include <vector>
#include <iostream>
int main()
{
std::vector<int> vec = {1, 2, 3, 4};
// 访问第二个元素
std::cout << vec.at(1) << std::endl;
// 访问越界元素
try
{
std::cout << vec.at(5) << std::endl;
}
catch (const std::out_of_range& e)
{
std::cout << "抛出了异常:" << e.what() << std::endl;
}
return 0;
}
```
输出:
```
2
抛出了异常:vector::_M_range_check
```
std::vector at的用法
std::vector 中的at()函数是一个库函数,它主要用于访问指定位置的元素。该函数接受一个位置/索引作为参数,并返回对指定位置/索引处元素的引用。
以下是关于std::vector at的详细用法:
1. **基本语法**
- **函数原型**:reference at( size_type pos );
- **参数**:pos (位置/索引):要访问的元素的位置。
- **返回值**:reference (引用):它返回对位置元素的引用 n。
2. **功能描述**
- at()函数的主要作用是访问指定位置的元素。如果给定的位置在矢量范围内,它将返回该位置的元素;否则,它将抛出一个out_of_range异常。
3. **优点**
- at()函数会额外检查访问是否越界,因此可以避免因数组越界而导致的程序崩溃。
4. **缺点**
- 由于进行了额外的边界检查,使用at()函数的程序运行速度可能会比直接使用[]操作符慢。
5. **适用场景**
- 当需要确保代码的安全性,避免数组越界错误时,推荐使用at()函数。
- 当程序的效率要求较高,且可以确保索引不会越界时,可以使用[]操作符。
6. **示例代码**
- ```c++
vector<int> vec = {1, 2, 3, 4, 5};
cout << vec.at(0) << endl; // 输出:1
cout << vec.at(1) << endl; // 输出:2
```
在使用std::vector at时,需要注意以下几点:
- 确保索引值在有效范围内,否则at()函数会抛出out_of_range异常。
- 如果对程序的效率有较高要求,并且可以确保索引不会越界,可以考虑使用[]操作符。
- 如果不确定索引是否会越界,或者希望在出错时能够捕获并处理异常,那么应该使用at()函数。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)