-
Notifications
You must be signed in to change notification settings - Fork 0
/
Vector.cpp
85 lines (64 loc) · 2.28 KB
/
Vector.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include "Vector.h"
Matrix::Vector::Vector(const ConstBaseVector& orig) {
//create a vector that contains the same elements as in orig
//allocates space for the raw vector with the original size of the ConstBaseVector
rawVector.reserve(orig.size());
// iterates through the orig.size() and pushes back the element in the container of orig
for (int i = 0; i < orig.size(); i++) {
rawVector.push_back(orig.at(i));
}
}
Matrix::Vector::Vector(int numElements, const BaseVector::value_type& value) {
// create a vector that holds numElements and each element is value
rawVector.reserve(numElements);
for (int i = 0; i < numElements; i++) {
rawVector.push_back(value);
}
}
Matrix::Vector::Vector(int numElements) {
// creates a vector that holds numElements 0's
rawVector.reserve(numElements);
for (int i = 0; i < numElements; i++) {
rawVector.push_back(0);
}
}
Matrix::Vector::Vector(const std::vector<value_type>& values) {
// creates a vector that contains the specified values
rawVector = values;
}
Matrix::Vector::Vector() {
// creates a 1x1 vector with the value 0
rawVector.reserve(1);
rawVector.push_back(0);
}
int Matrix::Vector::size() const {
// returns the number of elements in the vector
return rawVector.size();
}
Matrix::BaseVector::value_type& Matrix::Vector::at(int index) {
// return the element at the position
return rawVector.at(index);
}
const Matrix::BaseVector::value_type& Matrix::Vector::at(int index) const {
// return the element at the position
return rawVector.at(index);
}
Matrix::BaseVector::value_type& Matrix::Vector::operator[](int index) {
// return the element at the position
return rawVector[index];
}
const Matrix::BaseVector::value_type& Matrix::Vector::operator[](int index) const {
// return the element at the position
return rawVector[index];
}
Matrix::Vector& Matrix::Vector::operator=(const ConstBaseVector& rhs) {
// assignment operator
// make all of the elements in this vector the same
// as what is in rhs. adjust the size of this vector if necessary
rawVector.clear();
rawVector.reserve(rhs.size());
for (int i = 0; i < rhs.size(); i++) {
rawVector.push_back(rhs[i]);
}
return *this;
}