复杂元素上的std :: max_element(operator = issue)

时间:2016-07-01 13:43:32

标签: c++ c++11

我试图找到复数双精度矢量的max元素(基于复数double的实部)。代码如下:

#include <iostream>
#include <algorithm>
#include <vector>
#include <complex>

using namespace std;

int main()
{
    vector<complex<double> > rts;
    for (int i = -1; i<5; i++)
        rts.push_back(complex<double>(i,0));

    complex<double> d;
    d = std::max_element(rts.begin(), rts.end(), [](complex<double> const & lhs, complex<double> const & rhs) {return lhs.real() < rhs.real();});

    return 0;
}

我收到错误

与'operator ='不匹配(操作数类型为'std :: complex'和'__gnu_cxx :: __ normal_iterator *,std :: vector&gt;&gt;')|

有谁可以帮我理解问题所在?

谢谢!

1 个答案:

答案 0 :(得分:3)

函数"Eskuvo/" +ca.copyname + "/" + yourfilenamehere + ".jpg" 返回一个迭代器,你需要取消引用它:

String file = "/sdcard/Eskuvo/" + ca.copyname + "/" + count".jpg";

注意:如果在真实代码中使用它,您可能希望确保您的范围不是第一个空,否则您将取消引用无效的迭代器。