C++ Vector

#include <vector>
template <typename T>
class vector;

Constructors

Destructor

Member Functions

C++ Matrix

std::vector <std::vector<int>> m (size);

for (int i=0;i<size;i++)
{
    m[i].resize(size);
}

// now we can access as normal
m[0][0] = ...;
m[0][size-1] = ...;
m[size-1][size-1] = ...;

Vector as a Stack

// using a vector as a stack
    
#include <cassert>

std::vector<int> stack;

for (int i=0;i<5;i++)
{
    stack.push_back(i);
}

for (int i=4;i>-1;i--)       // 4,3,2,1,0
{
    int x = stack.back();

    assert (x == i);

    stack.pop_back();
}

Binary Search

//
// binary search of sorted vector
//
bool binary_search (const std::vector<int> v, int k)
{
    int first = 0;
    int last = v.size()-1;
    int middle = (first+last) / 2;

    while (first <= last)
    {
        if (k < v[middle])   // reduce to 1st half
        {
            last = middle-1;
        }
        else if (k > v[middle]) // reduce to 2nd half
        {
            first = middle+1;
        }
        else
        {
            return true;
        }

        middle = (first+last) / 2;
    }

    return false;
}

#include <vector>
#include <algorithm> // sort, binary_search

std::vector<int> v { 1, 10, 2, 9, 3, 8, 4, 7, 5, 6 };

std::sort (v.begin(), v.end());

std::cout << binary_search(v, 10) << std::endl;     // true
std::cout << binary_search(v, 12) << std::endl;     // false

// we could also use library method
std::cout << std::binary_search(v.begin(), v.end(), 10) << std::endl;     // true
std::cout << std::binary_search(v.begin(), v.end(), 12) << std::endl;     // false