当前位置:首页 C++ > 正文

UC++中vector的下标访问和at访问

作者:野牛程序员:2023-07-11 08:35:39 C++阅读 2817

在C++中,vector是一个动态数组,用于存储一系列的元素。你可以使用下标访问和at函数来访问vector中的元素。

  1. 下标访问: 下标访问使用方括号[]运算符来访问vector中的元素。下标从0开始,表示第一个元素,依次递增。

    例如,假设你有一个名为vecvector,你可以使用下标访问来获取或修改特定位置的元素,如下所示:

    #include <vector>
    #include <iostream>
    
    int main() {
        std::vector<int> vec = {1, 2, 3, 4, 5};
    
        int element = vec[2];  // 访问索引为2的元素
        std::cout << "Element at index 2: " << element << std::endl;
    
        vec[3] = 10;  // 修改索引为3的元素的值
        std::cout << "Modified vector: ";
        for (int i = 0; i < vec.size(); i++) {
            std::cout << vec[i] << " ";
        }
        std::cout << std::endl;
    
        return 0;
    }

    输出结果:

  2. Element at index 2: 3
    Modified vector: 1 2 3 10 5

    请注意,如果你使用的索引超出了vector的有效范围,将导致未定义的行为,因此在使用下标访问之前,最好确保索引在合法范围内。

  3. at访问:vector还提供了一个成员函数at,它类似于下标访问,用于获取或修改指定位置的元素。与下标访问不同,at函数会进行边界检查,如果索引超出了有效范围,将抛出一个std::out_of_range异常。

    以下是使用at函数的示例:

    #include <vector>
    #include <iostream>
    
    int main() {
        std::vector<int> vec = {1, 2, 3, 4, 5};
    
        try {
            int element = vec.at(2);  // 访问索引为2的元素
            std::cout << "Element at index 2: " << element << std::endl;
    
            vec.at(6) = 10;  // 尝试修改索引为6的元素的值,超出有效范围
        } catch (const std::out_of_range& e) {
            std::cout << "Exception caught: " << e.what() << std::endl;
        }
    
        return 0;
    }

    输出结果:

  4. Element at index 2: 3
    Exception caught: vector::_M_range_check: __n (which is 6) >= this->size() (which is 5)

  5. 在这个示例中,我们尝试使用at(6)来访问索引为6的元素,它超出了vector的有效范围,导致抛出一个std::out_of_range异常。

总结:

  • 下标访问使用方括号[]运算符,不进行边界检查,访问超出范围的索引可能导致未定义的行为。

  • at函数提供了边界检查,如果索引超出范围,将抛出std::out_of_range异常,可以更安全地访问vector的元素。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击