c-自动检查std :: vector中的界限
作者:互联网
这个问题已经在这里有了答案: > Compile time triggered range check for std::vector 2个
在积极开发使用std :: vector的类的过程中,经常会发生索引超出范围的情况. (有关实际示例,请参见this code review question.)使用operator []时,这将导致未定义的行为.不过,[]语法比编写.at()更容易阅读,更方便.
因此,我想使用[]运算符来编写代码,但同时启用了边界检查.测试代码后,应该很容易删除边界检查.
我在考虑以下代码:
util::bound_checked<std::vector<int>> numbers;
numbers.push_back(1);
numbers.push_back(2);
numbers.push_back(3);
numbers.push_back(4);
std::cout << numbers[17] << "\n";
在我看来,该实用程序模板非常简单明了,以至于我希望它存在.可以?如果是这样,用哪个名字?
解决方法:
To me, this utility template seems to be so straight-forward that I’d
expect it to exist
对于gcc它确实存在. gcc libstdc有一组调试容器.对于std :: vector,它具有__gnu_debug :: vector调试容器.参见documentation.
标签:c,undefined-behavior,stdvector 来源: https://codeday.me/bug/20191010/1886997.html