std::vector 的 .at() 函数到底有什么作用?

What does std::vector's .at() function really do?

本文关键字:什么 作用 vector at std 函数      更新时间:2023-10-16

这两种方法在向量中插入值有什么区别:

vector<int> vectorlist (12);
vectorlist[12]=23;

对比:

vector<int> vectorlist (12);
vectorlist.at(12)=23;

.at(…)正在执行绑定检查,而[]运算符则不执行,即超出范围。

请参阅此处的文档:

http://www.cplusplus.com/reference/vector/vector/at/

该函数自动检查n是否在向量中有效元素的边界内,如果不在,则抛出out_of_range异常(即,如果n大于或等于其大小)。这与不检查边界的成员运算符[]形成对比。

或:

http://www.cplusplus.com/reference/vector/vector/operator[]/

类似的成员函数vector::at与此运算符函数具有相同的行为,不同之处在于vector::at被绑定检查,并通过抛出out_of_range异常来发出请求位置是否超出范围的信号

稍微偏离主题,但您不应该使用"向量列表"术语来表示向量。一开始,我以为你会因为某种原因得到一个列表数据。

因此,给你一个真实世界的例子:当你确定索引在范围内时,你可以使用非绑定检查变体,因为这会导致代码稍微快一点。

根据C++标准:

类似的成员函数vector::at与此运算符[]函数具有相同的行为,不同之处在于vector::at已进行绑定检查,并通过抛出out_of_range异常来发出请求位置是否超出范围的信号。