gpt4 book ai didi

c++ - 在 C++ 中访问 vector 的元素?

转载 作者:IT老高 更新时间:2023-10-28 12:34:14 24 4
gpt4 key购买 nike

我经常发现人们使用数组括号 [] 和法线 vector 函数 .at()。为什么有两种不同的方法?两者的优点和缺点是什么?我知道 .at() 比较安全,但是有没有什么情况下不能使用 .at() 呢?如果 .at() 总是更安全,为什么还要使用数组括号 []。

我四处搜索,但找不到类似的问题。如果这样的问题已经存在,请转发给我,我会删除这个问题。

最佳答案

std::vector::at() 通过抛出 std::out_of_range 来防止您越界访问数组元素。异常不同于 [] 运算符,它在访问超出 vector 边界时不会发出警告或抛出异常。

std::vector 是/被认为是 c99 中可变长度数组 (VLA) 的 C++ 替换/构造。为了让 c 风格的数组可以轻松地被 std::vector 替换,vector 需要提供与数组类似的接口(interface),因此 vector 提供了一个 [] 运算符用于访问其元素。同时,C++ 标准委员会可能也觉得有必要为 std::vector 提供额外的安全性而不是 c 样式数组,因此他们还提供了 std::vector::at () 提供它的方法。

自然,std::vector::at() 方法会在取消引用之前检查 vector 的大小,这将是访问的一点开销(在大多数用例中可能可以忽略不计) [] 的元素,因此 std::vector 为您提供了安全或更快的选择,但代价是您自己管理安全性。

关于c++ - 在 C++ 中访问 vector 的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8221702/

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