繰り返し処理の各処理におけるパフォーマンスをプログラムを書いています。
繰り返し処理は、行列の足し算で各要素を足す処理を指しています。
配列に入れた後、昇順にソートします。

以下のコードを組み合わせて、現在のプログラムを書きました。
繰り返し処理(行列の足し算)の参考コード
中央値を求める参考コード

解決したいこと
現在のプログラムをコンパイルするとエラーが表示されるのですが、エラー文を読んでもどのように修正すれば中央値を求めることができるのかわからず困っています。

コンパイルエラー

$ g++ -o simple simple.cpp
simple.cpp:32:24: error: implicit instantiation of undefined template 'std::__1::vector<double, std::__1::allocator<double> >'
    std::vector<double>timedata;
                       ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/iosfwd:200:28: note: template is declared here
class _LIBCPP_TEMPLATE_VIS vector;
                           ^
1 error generated.

該当コード

#include <chrono>
#include <iostream>
#include <thread>

//繰り返し処理全体にかかった時間
using namespace std::chrono;


int main()
{
    #define N 2

    double A[N][N] = {
        {3.0, 5.0},
        {9.0, 5.0}
    };

    double B[N][N] = {
        {3.0, 6.0},
        {8.0, 9.0}
    };

    double C[N][N] = {
        {0.0, 0.0},
        {0.0, 0.0}
    };
    int i, j, k, n;



    //各足し算にかかった時間を入れる配列
    std::vector<double>timedata;

    for(i=0; i<N; i++){
        for(j=0; j<N; j++){
                //測定開始
                std::chrono::high_resolution_clock::time_point start = std::chrono::high_resolution_clock::now();
                C[i][j] += A[i][j]+B[i][j];
                //測定終了
                high_resolution_clock::time_point end = high_resolution_clock::now();
                double time =  std::chrono::duration_cast<std::chrono::nanoseconds>(end - start).count();

                //配列にappend
                timedata.push_back(time);
            }
    }


    //配列をソート
    timedata = sort(timedata);

    return timedata;

}