14 #ifndef __seqListIncluded
15 #define __seqListIncluded
18 #include <initializer_list>
138 seqList(
const std::initializer_list<T> &init_list);
146 virtual void clear();
147 virtual int length()
const;
148 virtual void insert(
int i,
const T &obj);
149 virtual void remove(
int i);
150 virtual int search(
const T &obj)
const;
151 virtual T
visit(
int i)
const;
152 virtual void traverse(std::ostream &out = std::cout)
const;
227 const T &
front() const;
247 const T &
back() const;
278 friend std::ostream &operator<<(std::ostream &out, const
seqList &obj)
285 virtual const_iterator
begin()
const {
return iterator(
data); }
306 return currentLength;
325 for (
size_t i = 0; i < currentLength; ++i)
326 out << data[i] <<
", ";
334 data =
new T[maxSize = initSize];
340 : currentLength{init_list.size()}, maxSize{2 * init_list.size()}
342 data =
new T[maxSize];
344 for (
auto itr = init_list.begin(); itr != init_list.end(); ++itr)
352 : data{rvalue.data}, currentLength{rvalue.currentLength}, maxSize{rvalue.maxSize}
354 rvalue.data =
nullptr;
355 rvalue.currentLength = 0;
361 : data{
new T[rhs.
maxSize]}, currentLength{rhs.currentLength}, maxSize{rhs.maxSize}
363 for (
size_t i = 0; i < rhs.maxSize; ++i)
364 data[i] = rhs.data[i];
370 for (
size_t i = 0; i < currentLength; ++i)
381 data =
new T[maxSize *= 2];
382 for (
size_t i = 0; i < currentLength; ++i)
383 data[i] = oldData[i];
391 if (i == currentLength)
394 for (
int k = currentLength++; k > i; --k)
395 data[k] = data[k - 1];
404 for (
int k = i; i < currentLength; ++k)
405 data[k] = data[k + 1];
413 for (
size_t k = 0; k < A.
length(); ++k)
416 for (
size_t k = 0; k < B.
length(); ++k)
425 if (index < 0 || index >= maxSize)
426 throw(std::string{
"下标越界"});
433 if (index < 0 || index >= maxSize)
434 throw(std::string{
"下标越界"});
441 if (currentLength > maxSize)
443 data[currentLength++] = x;
449 if (currentLength == maxSize)
451 data[currentLength++] = std::move(x);
475 return data[currentLength - 1];
481 return data[currentLength - 1];
504 T *newArray =
new T[maxSize = n];
505 for (
size_t i = 0; i < currentLength; ++i)
507 newArray[i] = std::move(data[i]);
509 std::swap(data, newArray);