其他分享
首页 > 其他分享> > c-自动检查std :: vector中的界限

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