2017-03-29 11 views
0

aの位置の値をベクトル内のbの位置に置きたいと思います。ベクトル内のある範囲の要素を値で置換する

私は約replace functionを読んでいますが、置き換えたい値を指定する必要があります。私は値を置き換える必要があります。

たとえば、ベクターが1 2 3 4 5 6 7 8 9 0 0 0 0 0 0の場合、位置0から位置8までのすべての要素を別の値に置き換えたい場合、そのreplace関数をどのように使用できますか?

私はこれを行うためにforループを使用していますが、私のプログラムは非常に遅いです。

+1

最も速いオプションはmemsetと思われます。別の価値がある場合はmemcpy。 –

+0

@Teo何で置き換えますか? – LogicStuff

+0

@LogicStuff整数を別の整数に置き換えたい – Teo

答えて

3

おそらくstd::fillあなたは何をしますか?

int newValue = 0; 
std::fill(std::begin(v), std::begin(v) + 8, newValue); 
+0

しかし、それはより効率的なループですか? – Teo

+0

@Teoはいです。 –

+0

@Teoこれがあなたの実際のボトルネックかどうかを判断するためには、測定とプロファイルを行う必要はありません。あなたのアーキテクチャとコンパイラの選択はすべて影響を与えます。 memcpyが実際に測定可能な利得を与えるように測定値がより低い何かを証明するまで標準アルゴリズムを優先します。 – acraig5075

関連する問題