Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <algorithm>
- class vector {
- int sz;
- double* elem;
- public:
- vector(int s)
- :sz{ s }, elem{ new double[s] }
- {
- for (int i = 0; i < sz; ++i) elem[i] = 0.0;
- }
- vector(std::initializer_list<double> lst)
- :sz{ int(lst.size())}, elem{new double[sz]}
- {
- std::copy(lst.begin(), lst.end(), elem);
- }
- // Example from book
- //
- /*vector(std::initializer_list<double> lst)
- :sz{ lst.size() }, elem{ new double[sz] } << lst.size() gives a narrowing conversion error. lst.size() returns size_t and not an int.
- {
- std::copy(lst.begin(), lst.end(), elem);
- }*/
- ~vector()
- {
- delete[] elem;
- }
- double& operator[](int index)
- {
- if (index >= sz) {
- std::cout << "index out of bounds, exiting";
- exit(0);
- }
- return elem[index];
- };
- int size() { return sz; }
- vector& operator=(const vector&);
- vector(const vector&);
- };
- vector& vector::operator=(const vector& a)
- {
- if (this == &a)
- return *this;
- double* p = new double[a.sz];
- std::copy(a.elem, a.elem + a.sz, p);
- delete[] elem;
- elem = p;
- sz = a.sz;
- return *this;
- }
- // Example from book
- //
- //vector& vector::operator=(const vector& a)
- //{
- // double* p = new double[a.sz];
- // std::copy(a.elem, a.elem + a.sz, elem); copying to elem then deleting elem next line?
- // delete[] elem;
- // elem = p;
- // sz = a.sz;
- // return *this;
- //}
- vector::vector(const vector& arg)
- :sz{ arg.sz }, elem{ new double[arg.sz] }
- {
- std::copy(arg.elem, arg.elem + arg.sz, elem);
- }
- //Example from book
- //
- //vector::vector(const vector& arg)
- // :sz{ arg.sz }, elem{ new double[arg.sz] }
- //{
- //
- // std::copy(arg, arg + sz, elem); can't do arg + sz
- //}
- int main()
- {
- vector v(20);
- for (int i = 0; i < v.size(); ++i)
- {
- v[i] = i;
- std::cout <<"V: " << v[i] << '\n';
- }
- v = { 5,5,5,5,5 };
- for (int i = 0; i < v.size(); ++i)
- {
- std::cout << "V new: " << v[i] << '\n';
- }
- vector a{ v };
- for (int i = 0; i < a.size(); ++i)
- {
- std::cout << "A: " << v[i] << '\n';
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement