gpt4 book ai didi

c++ - 我应该在我的代码中使用 std::vector::at()

转载 作者:IT老高 更新时间:2023-10-28 22:17:20 24 4
gpt4 key购买 nike

我今天注意到 std::vector::at() 比使用方括号 [] 访问值要慢得多。根据文档 .at() 更安全,因为它不会让我访问超出数组范围的值。但是,即使我使用 at() 访问超出范围的值,我显然仍然会遇到错误,所以无论如何我都需要避免这种情况。

那么有什么好的理由为什么有人会使用 at() 而不是 []

最佳答案

如果您有理由相信索引不在您的控制范围内,或者如果控制流程特别复杂并且您正在跟踪错误,那么您可能希望在期间使用 at()调试阶段,但绝不在循环内部或任何您知道索引是安全的情况下。

即使在其他情况下,您也应该预先验证索引(例如,如果它是用户输入),或者如果您只是从复杂的算法中获取值,请使用 assert 并修复错误(如果存在)一。 [编辑。] 或者,如果您正在编写一个非常复杂的算法并且您不确定所有索引是否始终有效,您可以在其中使用 at()算法并将调用放入 try block 中——但即使在这里,也最好是冒犯性的并与断言一起使用。[/]

就我个人而言,我看不出有任何充分的理由让 at() 在发布代码中继续存在。您可以设计一些示例,在这些示例中,您希望使用异常处理作为一种方便的方式来指导您的控制流,但是任何这样的用例都是非常具体的。

关于c++ - 我应该在我的代码中使用 std::vector::at(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6911289/

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