valarray を最初の要素で除算すると、最初の要素のみが 1 になり、他の要素は元の値を保持します。
#include <iostream>
#include <valarray>
using namespace std;
int main() {
valarray<double> arr({5,10,15,20,25});
arr=arr/arr[0]; // or arr/=arr[0];
for(int value:arr)cout << value << ' ';
return 0;
}
実際の出力は次のとおりです。
1 10 15 20 25
予想される出力は次のとおりです。
1 2 3 4 5
実際の出力が期待どおりにならないのはなぜですか?
-std=c++11 で g++(4.8.1) を使用しています