0
点赞
收藏
分享

微信扫一扫

C++11 给vector添加数组越界检查,并打印错误信息 = 继承stl的vector


打开编译器的优化之后,vector没有越界检查
一个比较简单的做法是自己定义一个类继承自stl的vector
做完数组的越界检查之后,再调用父类的[]运算符函数

#include <iostream>
#include <functional>
#include <vector>
#include <algorithm>

using namespace std;

#define debug(x) cout<<#x<<": "<<(x)<<endl;

template<typename T>
class MyVec :public std::vector<T> {
public:
T empty;
T& operator [](int index) {
if (index < 0) {
cout << "out of range" << endl;
return empty;
}
return vector<T>::operator[](index);
}
MyVec(vector<T>&& v) :vector<T>(v) {}
};

int main(int argc, char* argv[])
{

MyVec<int> v = vector<int>({1,1,1});
int a = v[-1];

return 0;
}


举报

相关推荐

0 条评论