📄 cvec.hpp
字号:
// $common\cvec.hpp 1.5 milbo$ cvec is like STL vector but checks for out of range indices when _DEBUG is defined.// Warning: this is raw research code -- expect it to be quite messy.//// If _DEBUG is not defined the MSC compiler generates code with the same efficiency as vector.// I checked this by looking at disassembled code.// Lifted from Ulrich Breymann "Designing Components with the C++ STL" section 9.1//// milbo durban jan06// $common\cvec.hpp 1.0$#if !defined(cvec_hpp)#define cvec_hpp#include <vector>using namespace std;#if _DEBUGvoid __cdecl SysErr(const char *pArgs, ...); // args like printf#define DASSERT(x) if (!(x)) SysErr("%s %d: FAIL %s", __FILE__, __LINE__, #x)#else#define DASSERT(x)#endiftemplate<typename T> class cvec: public vector<T>{public: // typenames like iterator are also inheritedcvec() {}cvec(size_type n, const T& value=T()): vector<T>(n, value) {}cvec(iterator i, iterator j): vector<T>(i,j) {}reference operator[](difference_type i) { DASSERT(i >= 0 && i < (difference_type)size()); return vector<T>::operator[](i); }const_reference operator[](difference_type i) const { DASSERT(i >= 0 && i < (difference_type)size()); return vector<T>::operator[](i); }};#endif // cvec_hpp
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -