Std::max_element用于复杂元素(operator= issue)
std::max_element on complex elements (operator= issue)
我试图找到复双精度向量的最大元素(基于复双精度的实分量)。代码如下:
#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>> ')|
谁能帮我弄明白是什么问题?谢谢!
函数max_element
返回一个迭代器,您需要取消引用它:
d = *std::max_element(rts.begin(), rts.end(), [](complex<double> const & lhs, complex<double> const & rhs) {return lhs.real() < rhs.real();});
注意:如果这是在实际代码中使用的,你首先要确保你的范围不是空的,否则你将解引用一个无效的迭代器。
相关文章:
- Seg Fault Issue C++ (file IO / getline)
- 为什么 std::optional::operator=(U&&) 要求你是非标量类型?
- 'operator='已弃用:改用 QDir::setPath()
- 过载'operator new'如何导致无限循环?
- 与'operator='不匹配(操作数类型'String'且"void")
- SegFault 同时使用 std::string::operator+= 和函数作为参数
- Issue with WriteProcessMemory
- 处理"no operator found"
- std::partition segfault issue
- 如何编写 operator= 用于使用虚拟方法与非平凡成员的匿名联合
- 运算符重载:"operator+"必须采用零个或一个参数
- 使用 operator() 扩展 Eigen::EigenBase
- VSCode C/C++ Intellisense issue: Undefined identifiers (Linu
- 错误消息:使用"string* +="后"no match for 'operator+='"
- 有没有办法修改'operator->',以便'z->im'返回复数的虚部
- OpenGL glBufferSubData Offset issue
- "operator +="行为异常的定义
- C++ "error: use of overloaded operator '*' is ambiguous"似乎只有一场比赛
- 错误:二进制'operator*' 'float'和'float[0]'类型的操作数无效
- Std::max_element用于复杂元素(operator= issue)