sch*_*312 5 c++ vector stdvector operator-keyword
如果我尝试访问std::vector越界,将导致未定义的行为.
const std::vector<int> vec {1,2,3};
const int a = vec[4];
Run Code Online (Sandbox Code Playgroud)
然而,这段代码可能不会立即失败,但a会有一个任意值;
如果vec通过该方法访问,.at()则将抛出异常.
const int a = vec.at(4);
Run Code Online (Sandbox Code Playgroud)
缺点是,如果.at()总是使用,性能将显着下降.
我的问题是,如果某些C++编译器支持编译标志,则会切换operator []到该.at()方法.
将其打开可以获得良好的可调试代码.将其关闭会导致快速发布可执行文件.
我知道堆检查工具,比如valgrind会发现这些bug,但是它们需要花费很多时间.
| 归档时间: |
|
| 查看次数: |
118 次 |
| 最近记录: |