temptemp.cpp
来自「很经典的书籍」· C++ 代码 · 共 66 行
CPP
66 行
//: C05:TempTemp.cpp
// Illustrates a template template parameter
#include <cstddef>
#include <iostream>
using namespace std;
template<class T>
class Array { // A simple, expandable sequence
enum {INIT = 10};
T *data;
size_t capacity;
size_t count;
public:
Array() {
count = 0;
data = new T[capacity = INIT];
}
void push_back(const T& t) {
if(count == capacity) {
// Grow underlying array
size_t newCap = 2*capacity;
T* newData = new T[newCap];
for (size_t i = 0; i < count; ++i)
newData[i] = data[i];
delete data;
data = newData;
capacity = newCap;
}
data[count++] = t;
}
void pop_back() {
if(count > 0)
--count;
}
T* begin() {
return data;
}
T* end() {
return data + count;
}
};
template<class T, template<class> class Seq>
class Container {
Seq<T> seq;
public:
void append(const T& t) {
seq.push_back(t);
}
T* begin() {
return seq.begin();
}
T* end() {
return seq.end();
}
};
int main() {
Container<int, Array> theData;
theData.append(1);
theData.append(2);
int* p = theData.begin();
while(p != theData.end())
cout << *p++ << endl;
} ///:~
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?