rvector.cct

来自「C语言前端编译器,yacc/lex编写,可自行修改代码.」· CCT 代码 · 共 119 行

CCT
119
字号
// Copyright 2000 by Robert Dick.
// All rights reserved.

/*###########################################################################*/
template <typename T>
inline T &
RVector<T>::operator[](size_type a) {
#ifdef ROB_DEBUG
	if (a >= size() || a < 0) {
		cerr << "For datatype " << typeid(*this).name() << ": size = " <<
		  size() << ".  Reference = " << a << ".\n";
		Rabort();
	}
#endif

	return impl_[a];
}

/*===========================================================================*/
template <typename T>
inline const T &
RVector<T>::operator[](size_type a) const {
	return runconst(*this)[a];
}

/*===========================================================================*/
template <typename T> template <class InIter>
void RVector<T>::assign(InIter first, InIter last) {
	impl_.assign(first, last);
}

/*===========================================================================*/
template <typename T>
T *
RVector<T>::insert(T * pos, const T & x) {
	return impl_.insert(pos, x);
}

/*===========================================================================*/
template <typename T> template <typename InIter>
void RVector<T>::insert(T * pos, InIter first,
InIter last) {
	impl_.insert(pos, first, last);
}

/*===========================================================================*/
template <typename T>
void RVector<T>::insert(T * pos, size_type n, const T & x) {
	impl_.insert(pos, n, x);
}

/*===========================================================================*/
template <typename T>
RVector<T> &
RVector<T>::operator=(const self & a) {
	impl_ = a.impl_;
	return *this;
}

/*===========================================================================*/
template <typename T>
comp_type
RVector<T>::comp_default(const self & b) const {
	return comp_cont(*this, b);
}

/*===========================================================================*/
template <typename T>
void RVector<T>::self_check_deep() const {
	self_check();
	map_self_check_deep(begin(), end());
}

/*###########################################################################*/
template <int DIM, typename T, template <int, typename> class INDEX>
MVector<DIM, T, INDEX>::MVector(size_t n,
typename super::const_reference value) :
	super(n, value)
{}

/*===========================================================================*/
template <int DIM, typename T, template <int, typename> class INDEX>
template <typename IT>
T &
MVector<DIM, T, INDEX>::operator[](const INDEX<DIM, IT> & indx) {
	return dim_index<IT>(indx.begin());
}

/*===========================================================================*/
template <int DIM, typename T, template <int, typename> class INDEX>
template <typename IT>
const T &
MVector<DIM, T, INDEX>::operator[](const INDEX<DIM, IT> & indx) const {
	return dim_index<IT>(indx.begin());
}

/*===========================================================================*/
template <int DIM, typename T, template <int, typename> class INDEX>
MVector<DIM, T, INDEX>::const_reference
MVector<DIM, T, INDEX>::operator[](size_type a) const {
	return super::operator[](a);
}

/*################################o##########################################*/
template <typename T, template <int, typename> class INDEX>
template <typename IT>
T &
MVector<1, T, INDEX>::operator[](const INDEX<1, IT> & a) {
	return dim_index<IT>(a.begin());
}

/*===========================================================================*/
template <typename T, template <int, typename> class INDEX>
template <typename IT>
const T &
MVector<1, T, INDEX>::operator[](const INDEX<1, IT> & a) const {
	return dim_index<IT>(a.begin());
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?