我有一个双精度向量,我需要在其中获取最大值,然后将值存储在一个整数变量中,以便我可以比较该值。到目前为止我有这个:
vector<double>::iterator result;
result = max_element(zerocrossdata.begin(), zerocrossdata.end());
如何将值放在变量中?
该std::max_element()
函数返回一个指向向量中最大元素的迭代器。
因此,要获得实际的最大值,您只需要像这样取消引用返回的迭代器:
double max_value = *result;
正如其他人已经说过的那样,您需要使用 * 运算符来尊重迭代器:
int max_value = *result;
但是,请注意,此操作的结果将是double,而不是 int。在几乎所有平台上,double 都是一个 8 字节的浮点值。您的结果可能超出 int(通常是带符号的 4 字节整数)可以支持的值范围。这可能会导致意外行为,并且您可能(或可能不会)收到有关它的编译器警告,具体取决于您的编译器和设置。