我有一组存储在文件中的坐标。我只提取了某些点的“x”坐标并存储在一个名为:
的向量中vector<double> x_points;
然后,我需要获取该向量内的最小和最大x坐标值。所以我使用*max_element
和*min_element
来加入<algorithm>
;
double max_in=*max_element(x_points.begin(),x_points.end());
double min_in=*min_element(x_points.begin(),x_points.end());
然后,当我打印值时,使用
cout<<" min-max-In "<<min_in<<" "<<max_in<<" ";
...它只显示整数部分。我需要小数部分的整个值。那么,我怎样才能获得真正的价值,因为我需要那些用这些值做另一个过程? 谢谢。请帮忙。
答案 0 :(得分:5)
使用默认精度(6位数)打印值。正是你得到的!
尝试添加cout.precision(10);
以获取更多数字。
答案 1 :(得分:1)
你为什么不使用std::set
而不是矢量?然后他们自然会被订购。这说它会破坏原始订单和任何重复(除非你使用std::multiset
),如果这对你很重要。
或者,您可以在读入时计算出最大/最小值,如下例所示。我对它进行了一些breif分析,并且确实没有增加任何可观的处理时间。
vector<double> xcoords;
double d, dMax, dMin;
bool firstLine(true);
ifstream inFile( argv[1] );
while ( inFile.good() )
{
inFile >> d;
if ( ! inFile.good() || inFile.eof() ) break;
xcoords.push_back(d);
if (firstLine)
{
dMax = d;
dMin = d;
firstLine = false;
}
else
{
dMax = max( dMax, d );
dMin = min( dMin, d );
}
}
cout << dMax << " " << dMin << " " << xcoords.size() << endl;