ベクトルから平均を効率的に計算しようとしています。私はの平均値を算出しています物事の種類(10,000異なる:私は(250)ベクトル値を効率的に追加および削除する方法C++
コラムバックつもりです日:
行: 私は(ベクトルのベクトル)行列を持っています)
現在、私は.push_back()
を使用しています。これは本質的に各列の各行を繰り返し実行してから、最後の値を削除するためにerase()
を使用します。このメソッドはすべての値を通過するので、私のコードは非常に遅いです。
私は置換にリンクされたメソッドを考えていますが、すべての値に順序が付いています(つまり、古い値を削除する必要があり、最新)。
これまでのコードは以下のとおりです。 正しい方向性のための解決策やガイドのアイデアは非常に高く評価されます。
//declaration
vector <vector<float> > vectorOne;
//initialization
vectorOne(250, vector<float>(10000, 0)),
//This is the slow method
vectorOne[column].push_back(1);//add newest value
vectorOne[column].erase(vectorOne[column].begin() + 0); //remove latest value
あなたは['deque'](http://en.cppreference.com/w/cpp/container/deque)のように聞こえます。 – molbdnilo
これは本当に不明です - 固定幅スライディングウィンドウ用の循環バッファを実装しようとしていますか? – Useless
これがあなたの実際のコードに近いなら、もちろんそれは本当に遅くなるでしょう。 'vectorOne(250、vector(10000,0)) 'は、すでに構築され、0に設定された250x10000要素のベクトルを構築します。' push_back'を使うと501st要素を追加します。その後、 'vectorOne [column] .erase(vectorOne [column] .begin()+ 0);'はデフォルトの0である最初の列を消去するので、前方9999個の要素をシャッフルする必要があります。なぜあなたは要素を消していますか?また、 'vectorOne [10] [25] = someval;'のように、 '[]'を使ってベクトルにアクセスして格納するだけでよいでしょう。 –
NathanOliver