#include "vector.h"

class Vector<ValueType>

This class stores an ordered list of values similar to an array. It supports traditional array selection using square brackets, but also supports inserting and deleting elements. It is similar in function to the STL vector type, but is simpler both to use and to implement.
Constructor
Vector() O(1)Initializes a new empty vector.
Vector(nvalue)  O(N) Initializes a new vector storing n copies of the given value.
Methods
add(value)  O(1) Adds a new value to the end of this vector.
clear()  O(1) Removes all elements from this vector.
equals(v)  O(N) Returns true if the two vectors contain the same elements in the same order.
get(index)  O(1) Returns the element at the specified index in this vector.
insert(indexvalue)  O(N) Inserts the element into this vector before the specified index.
isEmpty()  O(1) Returns true if this vector contains no elements.
mapAll(fn)  O(N) Calls the specified function on each element of the vector in ascending index order.
remove(index)  O(N) Removes the element at the specified index from this vector.
set(indexvalue)  O(1) Replaces the element at the specified index in this vector with a new value.
size()  O(1) Returns the number of elements in this vector.
subList(start, length)  O(N) Returns a new vector containing elements from a sub-range of this vector.
toString()  O(N) Converts the vector to a printable string representation.
Operators
v[index]  O(1) Overloads [] to select elements from this vector.
v1 + v2  O(N) Concatenates two vectors.
v1 += v2;  O(N) Adds all of the elements from v2 to v1.
v += value;  O(1) Adds the single specified value to v.
v += abc;  O(1) Adds multiple individual values to v.
v1 == v1  O(N) Returns true if v1 and v2 contain the same elements.
v1 != v2  O(N) Returns true if v1 and v2 are different.
ostream << v O(N) Outputs the contents of the vector to the given output stream.
istream >> v O(N) Reads the contents of the given input stream into the vector.

Constructor detail


Vector();
Vector(int n, ValueType value = ValueType());
Initializes a new vector. The default constructor creates an empty vector. The second form creates an array with n elements, each of which is initialized to value; if value is missing, the elements are initialized to the default value for the type.

Usage:

Vector<ValueType> vec;
Vector<ValueType> vec(n, value);

Method detail


void add(ValueType value);
void push_back(ValueType value);
Adds a new value to the end of this vector. To ensure compatibility with the vector class in the Standard Template Library, this method is also called push_back.

Usage:

vec.add(value);

void clear();
Removes all elements from this vector.

Usage:

vec.clear();

bool equals(const Vector& v) const;
Returns true if the two vectors contain exactly the same element values in the same order. Identical in behavior to the == operator.

Usage:

if (v.equals(v2)) ...

const ValueType& get(int index) const;
Returns the element at the specified index in this vector. This method signals an error if the index is not in the array range.

Usage:

ValueType val = vec.get(index);

void insert(int index, ValueType value);
Inserts the element into this vector before the specified index. All subsequent elements are shifted one position to the right. This method signals an error if the index is outside the range from 0 up to and including the length of the vector.

Usage:

vec.insert(0, value);

bool isEmpty() const;
Returns true if this vector contains no elements.

Usage:

if (vec.isEmpty()) ...

void mapAll(void (*fn)(ValueType)) const;
void mapAll(void (*fn)(const ValueType&)) const;
void mapAll(FunctorType fn) const;
Calls the specified function on each element of the vector in ascending index order.

Usage:

vec.mapAll(fn);

void remove(int index);
Removes the element at the specified index from this vector. All subsequent elements are shifted one position to the left. This method signals an error if the index is outside the array range.

Usage:

vec.remove(index);

void set(int index, ValueType value);
Replaces the element at the specified index in this vector with a new value. The previous value at that index is overwritten. This method signals an error if the index is not in the array range.

Usage:

vec.set(index, value);

int size() const;
Returns the number of elements in this vector.

Usage:

int nElems = vec.size();

Vector subList(int start, int length) const;
Returns a new vector containing elements from a sub-range of this vector. For example, the call of subList(2, 4) would return a new vector containing elements 2-5 of the original vector in its indexes 0-3. Throws an error if the range [start, start+length) is not contained within the range [0, size()].

Usage:

Vector<ValueType> sub = v.subList(start, length);

Available since: 2014/10/20 version of C++ library


string toString() const;
Converts the vector to a printable string representation, such as "{value1, value2, value3}".

Usage:

string str = vec.toString();

Operator detail


ValueType& operator[](int index);
const ValueType& operator[](int index) const;
Overloads [] to select elements from this vector. This extension enables the use of traditional array notation to get or set individual elements. This method signals an error if the index is outside the array range. The file supports two versions of this operator, one for const vectors and one for mutable vectors.

Usage:

vec[index]

Vector operator+(const Vector& v2) const;
Concatenates two vectors.

Usage:

v1 + v2

Vector& operator+=(const Vector& v2);
Vector& operator+=(ValueType value);
Adds all of the elements from v2 (or the single specified value) to v1. As a convenience, the Vector package also overloads the comma operator so that it is possible to initialize a vector like this:
   Vector<int> digits;
   digits += 0, 1, 2, 3, 4, 5, 6, 7, 8, 9;

Usage:

v1 += v2;
v1 += value;

Vector& operator,(ValueType value);
Adds an element to the vector passed as the left-hand operatand. This form makes it easier to initialize vectors in old versions of C++.

Usage:

vec.mapAll(fn);