GMa*_*ckG 18
vector
如果使用该at()
函数,A 将执行边界检查,例如:
std::vector<int> v(5);
v.at(3) = 10;
v.at(5) = 20; // throws an exception, std::out_of_range
Run Code Online (Sandbox Code Playgroud)
但是,如果使用operator[]
,则没有边界检查.(访问不存在的元素会导致未定义的行为.)
但应该注意的是,大多数实现都有可能在所有迭代器上包含边界检查,这将在这里的答案中讨论.默认情况下,VS2008及以下版本在Debug和Release中启用,VS2010仅在Debug中启用.gcc要求您定义_GLIBCXX_DEBUG
以获取已检查的迭代器.