gpt4 book ai didi

c++ - 使用 "at"或 [] 安全地访问 std::vector 的成员

转载 作者:太空狗 更新时间:2023-10-29 23:37:13 24 4
gpt4 key购买 nike

我有一个数组

arr[10]

它试图访问

arr[12]

直到我意识到当我切换到 vector 时,程序才做任何事情。我在某处读到如果我使用 [] 那么程序将不会再次给出任何运行时错误,所以我应该使用 std::vectorat。但在我的程序中,我只是使用了 [],它帮助我发现了问题。看起来 [] 就足够了。我对吗?另外,为了安全,数组有没有绑定(bind)检查?

最佳答案

C++ 库的某些实现具有 Debug模式,即使您使用 [] 语法也会抛出异常,但这不是标准指定的。所以这可能就是你所经历的。如果您想确保应该使用 at()

C++ 没有对原始数组进行边界检查,但是如果你的编译器支持最新版本的 C++,那么你可以使用 std::array 而不是原始数组,并且这个容器有一个 at() 方法就像 std::vector

我建议使用 std::array,即使您不想要此功能也是如此,因为原始数组还有一些其他问题(例如,它们会衰减为指针)。 std::array 的行为更加一致(例如,您可以将它们按值传递给函数或返回它们,它们将正常工作,而编写明显的语法以按值传递数组将失败,取而代之的是只需传递一个指针)。

帮自己一个忙,永远不要使用原始数组。

关于c++ - 使用 "at"或 [] 安全地访问 std::vector 的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8777313/

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