gpt4 book ai didi

c++ - 是不是 vector.at(vector.size()-1) 比 vector.back() 更好,以防它是空的?

转载 作者:行者123 更新时间:2023-12-05 08:44:49 27 4
gpt4 key购买 nike

以防万一 vector 为空,(意外,异常(exception)情况)

cppreference 在 vector::back() 上说:

Calling back on an empty container causes undefined behavior.

但是在 vector::at :

If pos is not within the range of the container, an exception of type std::out_of_range is thrown.

所以如果容器是空的,如果 back() 是 UB被使用了,但是std::out_of_range如果 at() 被抛出被使用了。

那么,用vector.at(vector.size()-1)不是更好吗?而不是 vector.back()以防它是空的?

(由于 vector.size() 将返回未签名的 size_tvector.size()-1 将是一些类似于 18446744073709551615 的数字,所以严格来说,vector.at(static_cast<int>(vector.size())-1) 可能会更好。)

最佳答案

“更好” 视情况而定。

back()当您知道 vector 时存在这些情况是“not v.empty()”。在这些情况下,使用 at()只是在浪费资源。这是一个很常见的情况。

at()另一方面,当您不知道或不关心提供的索引是否在范围内时,这可能很有用。您可能已经安装了一个异常处理程序,以便让其处理索引超出范围的异常事件。

关于c++ - 是不是 vector.at(vector.size()-1) 比 vector.back() 更好,以防它是空的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75336303/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com