【更新中】程序设计实习笔记

20220406 - 2022 程序设计实习之STL1作业

都是OI中学过的技巧……

C:很难蒙混过关的CArray3d三维数组模板类

感谢036 很难蒙混过关的CArray3d三维数组模板类 - icefield817 - 博客园

public:
	T *a;
	int n, m, o;
	struct CArray2D {
		T *a;
		int m, o;
		CArray2D(int _m, int _o, T *_a): m(_m), o(_o), a(_a) {}
		operator T*() {
			return a;
		}
		T* operator [](int j) {
			return a + j * o;
		}
	};
	CArray3D(int _n, int _m, int _o): n(_n), m(_m), o(_o) {
		a = new T [n * m * o];
		memset(a, 0, n*m*o*sizeof(T));
	}
	operator T*() {
		return a;
	}
	CArray2D operator [](int i) {
		return CArray2D(m, o, a + i * m * o);
	}

D:函数对象的过滤器

template<class T>
struct FilterClass{
	T m, n;
	FilterClass(T _m, T _n): m(_m), n(_n) {}
	bool operator ()(const T &t) {
		return m < t && t < n;
	}
};

E:白给的list排序

		greater<double>()

F:我自己的 ostream_iterator

参考课件,提示:

  • 实现 ostream_iterator 类应该重载以下运算符中的 \(3\) 个:=*++, !=
  • 输出的工作放在=运算符中做最合适。
public:
	ostream *out;
	string sep;
	myostream_iteraotr(ostream &_out, string _sep): out(&_out), sep(_sep) {}
	void operator ++() { cout << sep; }
	myostream_iteraotr<T> operator *() { return *this; }
	void operator =(const T& t) { (*out) << t; }
posted @ 2022-04-08 01:23  frank3215  阅读(75)  评论(0编辑  收藏  举报