使用g++编译器进行std::vector的调试和发布构建

3

可能是重复问题:
GCC STL边界检查

在g++ STL中是否有类似于std:vector的自动调试版本?如果没有,我该如何实现一个?

我想要的是在我的g++调用中指定一个调试参数,例如:

g++ -D DEBUG_ main.cpp

当定义了这个参数时,我希望所有的std::vectors在访问元素时都要检查它们的边界,就像使用vector::at()一样。
当省略了该参数时,我希望所有的向量都表现得好像使用了正常的[]运算符,也就是说不会因为边界检查而浪费性能。
我听说VC++做了类似的事情。所以我的问题是如何使用g++来实现这个功能?

我不会太担心使用at而不是operator[]所带来的性能浪费。 - chris
4
@chris: 你可能不是这样,但我们中的一些人是这样的。 - Mike Seymour
2个回答

8

0

在调试模式下,您可以进行额外的断言和检查,但使用at()[]始终是您自己的选择。

at() - 抛出out_of_bounds异常,[] - 不会。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接