# Overview of the core library¶

At the core of the vif library is the *vector* class, `vec`

. This is basically an enhanced `std::vector`

, and it therefore shares most of its features and strengths. On top of the `std::vector`

interface, the vif vectors have extra functionalities to simplify data analysis and calculations, including overloaded mathematical operators, multi-dimensional indexing, and the ability to create “views” to access and edit subsets of a given vector.

Here we will first describe the properties of the vector class, and then describe the vector views. Lastly, a guide for writing “generic” functions that work with any vector type is provided.