11:
17:
18:
//在数组的最后一个位置插入一个元素
void push_back(T& theElement) {
if (listSize == arrayLength) {
changeLengthlD(element, arrayLength, 2 * arrayLength);
arrayLength *= 2;
}
element[listSize] = theElement;
++listSize;
}
12:
void pop_back() {
--listSize;
}
//改变数组的大小,如果数组大小减少为四分之一的容量
void reduce(int initialCapacity) {
if (listSize < arrayLength / 4) {
int max = max(arrayLength / 2, initialCapacity);
changeLengthlD(this, arrayLength, max);
arrayLength = max;
}
}
13:
void swap(T& theList) {
int theIndex = indexOf(theList);
if (theIndex != -1) {
T a = *this;
*this = theList;
theList = *this;
}
}
14:
void reserve(int theCapacity) {
if (max(theCapacity, arrayLength) == theCapacity) {
changeLengthlD(this, arrayLength, theCapacity);
}
}
15:
//用一个元素替换索引位置的值
void set(int theIndex, T& theElement) {
if (theIndex<0 || theIndex>listSize) {
//无效索引
ostringstream s;
s << "index=" << theIndex << "size=" << listSize;
cout<<s.str();
}
element[theIndex] = theElement;
}
16:
void clear(){
T* temp = new T[0];
delete[] element;
element = temp;
}
17:
//删除索引范围内的所有元素
void removeRange(int i1, int i2) {
if (min(i1, i2) || max(i1, i2)) {
//无效索引
ostringstream s;
s << "index=" << i1<<" "<<i2 << "size=" << listSize;
cout<<s.str();
}
for (int i = 0; i != max(i1, i2) - min(i1, i2) + 1; ++i) {
erase(i1);
}
}
18:
//找出指定元素最后出现的索引
int lastInexOf(const T& theElement) {
for (int i = listSize - 1; i >= 0; --i) {
if (element[i] == theElement) {
return i;
}
}
return -1;
}
19:不知道定理5-1
20:找不到当初的代码了。