繼承STL模板類實現有序表
阿新 • • 發佈:2022-04-22
//order_list.h #pragma once #include <list> #include <initializer_list> using namespace std; template <typename T> class order_list :public list<T> { public: explicit order_list(initializer_list<int> il) { auto p = il.begin(); while (p != il.end()) insert(*p++); } order_list() { } //由於要構造有序表,所以需禁用基類的某些插入函式 void push_front(const T& val) = delete; void push_back(const T& val) = delete; //派生類會隱藏基類的同名函式(無論返回值和引數列表是否相同) void insert(T val) { auto it = this->begin(); while (it != this->end() && val > *it) { it++; } list<T>::insert(it, val); } };
/main.cpp
#include "order_list.h"
#include <iostream>
using namespace std;
int main() {
order_list<int> ol{ 1,2,4,5 };
ol.insert(3);
ol.insert(100);
for (int x : ol) {
cout << x << endl;
}
return 0;
}
output:
1
2
3
4
5
100