-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmatrix.cpp
More file actions
89 lines (73 loc) · 2.65 KB
/
Copy pathmatrix.cpp
File metadata and controls
89 lines (73 loc) · 2.65 KB
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
77
78
79
80
81
82
83
84
85
86
87
88
89
// Copyright (C) 2024 Jimmy Aguilar Mena
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "matrix.hpp"
int main()
{
std::cout << "Construct a zero filled matrix" << std::endl;
matrix<double> mat(5, 4);
std::cout << "\nInitialize usng the [] operator" << std::endl;
for (size_t r = 0, count = 0; r < 5; ++r)
for (size_t c = 0; c < 4; ++c)
mat[r][c] = (double) count++;
std::cout << "\nPrint the matrix using the overloaded operator <<" << std::endl;
std::cout << mat;
// Test the accessors
for (size_t r = 0, count = 0; r < 5; ++r) {
for (size_t c = 0; c < 4; ++c) {
double tmp = (double) count++;
myassert(mat[r][c] == tmp);
myassert(mat(r, c) == tmp);
}
}
// Print C++-11 for syntax dual iterator
// Test dual iterator accesor.
std::cout << "\nTest two iteration levels access and print" << std::endl;
size_t i = 0;
for (const auto it : mat) {
size_t j = 0;
for (const auto itt : it) {
std::cout << itt << " ";
myassert(mat[i][j++] == itt);
}
std::cout << std::endl;
++i;
}
std::cout << "\nTest one iteration levels access print" << std::endl;
for (const auto it : mat)
std::cout << it;
std::cout << "\nChange the values with for loop and implicit iterator" << std::endl;
for (auto it : mat)
for (auto &val : it)
val = 42;
std::cout << "\nTest values after for loop and implicit iterator" << std::endl;
for (size_t r = 0; r < 5; ++r) {
for (size_t c = 0; c < 4; ++c) {
myassert(mat[r][c] == 42);
myassert(mat(r, c) == 42);
}
}
std::cout << "\nTest modification with iterator" << std::endl;
for (matrix<double>::iterator it = mat.begin(); it != mat.end(); ++it)
for (auto itt = (*it).begin(); itt != (*it).end(); ++itt)
*itt = -42;
std::cout << "\nTest values after modification with iterator" << std::endl;
for (size_t r = 0; r < 5; ++r) {
for (size_t c = 0; c < 4; ++c) {
myassert(mat[r][c] == -42);
myassert(mat(r, c) == -42);
}
}
std::cout << "\nPrint using const iterator" << std::endl;
for (matrix<double>::const_iterator it = mat.begin(); it != mat.end(); ++it)
std::cout << *it;
return 0;
}