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
|
#include <iostream>
#include <vector>
#include <valarray> // <array> DOESN'T ACCEPT AN INITIALIZER LIST
class Matrix
{
public:
int m_rows;
int m_cols;
std::vector<double> m_vec;
public:
Matrix(int r, int c){m_rows = r; m_cols = c;}
Matrix(int r, int c, std::initializer_list<double> list)
{
m_rows = r; m_cols = c; // CHECK HERE FOR SIZE OF LIST
m_vec.clear();
for(auto it:list) // 2D vs 1D VECTOR
m_vec.push_back(it);
}
~Matrix(){};
friend std::ostream& operator<< (std::ostream& out, Matrix& m)
{
for(auto iter :m.m_vec)
out << iter << ' ';
out << '\n';
return out;
}
};
int main()
{
std::initializer_list<int> init_list;
init_list =
{
1,2,3,
4,5,6,
7,8,9
};
std::cout << "VECTOR\n";
std::vector<int> vec{init_list};
for (auto it:vec)
std::cout << it << ' ';
std::cout << "\n\n";
std::cout << "VALARRAY\n";
std::valarray<int> arr(init_list);
for (auto it:arr)
std::cout << it << ' ';
std::cout << "\n\n";
std::cout << "MATRIX\n";
Matrix m(3,3, // PROBABLY CAN AVOID THIS BY INITIALLY DECLARING MATRIX(r,c)
{
1,2,3,
4,5,6,
7,8,9
} );
std::cout << m;
return 0;
}
|