相关疑难解决方法(0)

vector :: at vs. vector :: operator []

我知道这at()[]它的边界检查慢,这也在类似的问题中讨论,如C++ Vector at/[] operator speed:: std :: vector :: at()vs operator [] << Surprising results !! 速度慢5到10倍!.我只是不明白这种at()方法有什么用处.

如果我有一个像这样的简单向量:std::vector<int> v(10);我决定通过使用at()而不是[]在我有索引的情况下访问它的元素i并且我不确定它是否在向量范围内,它迫使我用try-catch包装它块:

try
{
    v.at(i) = 2;
}
catch (std::out_of_range& oor)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

虽然我能够通过自己使用size()和检查索引来获得相同的行为,这对我来说似乎更容易和方便:

if (i < v.size())
    v[i] = 2;
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:
使用vector :: at over vector :: operator []有什么好处?
我什么时候应该使用vector :: at而不是vector :: size …

c++ stl stdvector

79
推荐指数
5
解决办法
5万
查看次数

标签 统计

c++ ×1

stdvector ×1

stl ×1