vector<int> locationVec; locationVec[i] 和 locationVec.at(i) 的区别

在C++中,vector<int>是一个动态数组,可以存储整数类型的元素。locationVec是一个vector<int>类型的对象。

locationVec.at(i)locationVec[i]都用于访问locationVec中的元素,但它们有一些区别。

  1. locationVec.at(i): 这是一个成员函数,用于返回locationVec中索引为i的元素的值。如果索引i超出了有效范围,即超出了locationVec的大小,at()会抛出一个std::out_of_range异常。这种情况下,可以通过捕获异常来处理超出范围的访问。
    try {
        int value = locationVec.at(i);
        // 处理value的值
    } catch (const std::out_of_range& e) {
        // 处理访问超出范围的情况
    }
  1. locationVec[i]: 这是一个运算符重载,用于返回locationVec中索引为i的元素的值。与at()不同,如果索引i超出了有效范围,即超出了locationVec的大小,operator[]不会抛出异常,而是产生未定义的行为。这意味着可能会访问到无效的内存位置,导致程序崩溃或产生不可预测的结果。
因此,如果您确定索引值在有效范围内,可以使用locationVec[i]来访问元素,因为它的效率更高。但如果索引值可能超出范围,为了安全起见,建议使用locationVec.at(i)并处理可能的异常。
posted @ 2023-08-04 10:12  赋流  阅读(11)  评论(0编辑  收藏  举报