8
vector :: at与vector :: operator []
我知道这at()比[]它的边界检查要慢,因为边界检查也有类似的问题,例如C ++ Vector at / []运算符速度 或:: std :: vector :: at()vs :: [] <<令人惊讶的结果!慢/快5到10倍!。我只是不明白该at()方法有什么用。 如果我有一个像这样的简单向量:std::vector<int> v(10);并且我决定通过使用at()而不是[]在有索引的情况下使用in 来访问其元素,i并且不确定其是否在向量范围内,它将迫使我用try-catch包装它块: try { v.at(i) = 2; } catch (std::out_of_range& oor) { ... } 尽管我可以自己使用size()和检查索引来获得相同的行为,但对我来说似乎更容易也很方便: if (i < v.size()) v[i] = 2; 所以我的问题是:与vector :: operator [] 相比,使用vector :: at有什么优点? 什么时候应该使用vector :: at而不是vector :: size …