(Click on title slide to access entire slide deck.)

Lecture Panopto Watch the lecture here.

Lecture 4

In this lecture we start to get into some of the features of C++ that make it such a powerful language for HPC – and, in general, for building large-scale software systems.

In particular, we go step-by-step through the development of a C++ class for representing a mathematical vector (an N-tuple).

By the end of lecture we arrive at the following Vector class:

#include <vector>

class Vector {
public:
  Vector(size_t M) : num_rows_(M), storage_(num_rows_) {}

        double& operator()(size_t i)       { return storage_[i]; }
  const double& operator()(size_t i) const { return storage_[i]; }

  size_t num_rows() const { return num_rows_; }

private:
  size_t num_rows_;
  std::vector<double> storage_;
};

This is a straightforward, but surprisingly powerful, representation for a vector.

Important C++ concepts that we focus on during the development are

  • class definition
  • member functionws
  • private and public
  • constructors
  • initialization syntax
  • operators
    • operator+
    • operator()
  • const

Previous section:
Next section: