1

我有一个双精度向量,我需要在其中获取最大值,然后将值存储在一个整数变量中,以便我可以比较该值。到目前为止我有这个:

vector<double>::iterator result;

result = max_element(zerocrossdata.begin(), zerocrossdata.end());

如何将值放在变量中?

4

2 回答 2

9

std::max_element()函数返回一个指向向量中最大元素的迭代器。

因此,要获得实际的最大值,您只需要像这样取消引用返回的迭代器:

double max_value = *result;
于 2012-11-13T15:37:05.827 回答
3

正如其他人已经说过的那样,您需要使用 * 运算符来尊重迭代器:

int max_value = *result;

但是,请注意,此操作的结果将是double,而不是 int。在几乎所有平台上,double 都是一个 8 字节的浮点值。您的结果可能超出 int(通常是带符号的 4 字节整数)可以支持的值范围。这可能会导致意外行为,并且您可能(或可能不会)收到有关它的编译器警告,具体取决于您的编译器和设置。

于 2012-11-13T15:58:02.567 回答