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;
}


已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 精致技术 设计师:CSDN官方博客 返回首页