使用 STL::vector:
vector<int> v(1);
v[0]=1; // No bounds checking
v.at(0)=1; // Bounds checking
有没有一种方法可以禁用边界检查,而不必将所有 at()
重写为 []
?我正在使用 GNU 标准 C++ 库。
编辑:我在怀疑有瓶颈的地方将at()
改为[]
,大大减少了计算时间.但是,由于我在开发代码和运行实验之间反复进行,我想在开发期间启用边界检查,并在我真正运行实验时禁用它。我想 Andrew 的建议是最好的解决方案。
最佳答案
如果你真的想这样做(至少是为了快速和肮脏的分析比较),如果你没有其他的at()
,这将起作用。 s
#define at(x) operator[](x)
如果你想保留 at()
用于开发和使用operator[]
在生产中,只需将其包装在 #ifdef
中.
如果你还有其他 at()
s 你可以随时编辑你的#include
d <vector>
文件。
关于c++ - 禁用 C++ vector 的边界检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2384349/