使用vector求解容器中的最大值和最小值时,使用如下函数,
auto maxminDown = std::minmax_element(容器->GetValues().begin(), 容器->GetValues().end());
运行发生崩溃。
auto mm = m_downdata[i]->GetValues();
auto maxminDown = std::minmax_element(mm.begin(), mm.end());
这样就可以。
GetValues函数定义如下:
std::vector<double > Entity::GetValues()
{
return m_values;
}
原因:
函数中的迭代器并不是一个,也就是 容器->GetValues().begin(),
容器->GetValues().end()
中begin前面的迭代器与end前面的迭代器已经不是同一个了。
解决办法:1、如上所示,auto mm = 容器->GetValues();
2、将GetValues()函数更改为如下例子:
const std::vector<double > &GetValues();
这两种方法均可完美解决所述问题,但还是推荐第二种方法。
这里可以去看看C++中有关引用的部分。