我是 C++ 和编程的新手,我正在尝试获取用户在不同行中输入的复数,直到用户点击 ctr-d。我的逻辑在正确的轨道上吗?我知道我有很多错误。提前致谢
main(){
vector <complex<double> > vector;
double cmplx;
while (!cin.eof()){
cout << "Enter a complex number or ctr-d to stop" << endl;
cin >> cmplx;
vector.push_back(cmplx);
}
sort(vector.begin(),vector.end());
for (int x = 0; x < vector.size(); x++)
cout << vector[x] << endl;
}
最佳答案
从数学上讲,没有为复数定义的顺序,这就是为什么没有 operator<
的原因为 complex
定义.您可以尝试发明自己的排序函数(例如按字典顺序排序),但这需要编写您自己的比较器函数:
template <class T>
bool complex_comparator(const complex<T> &lhs, const complex<T> &rhs) {
return real(a) == real(b) ? imag(a) < imag(b) : real(a) < real(b);
}
然后像这样调用排序:
sort(v.begin(), v.end(), complex_comparator<double>);
但是,我不太确定您要实现的目标是什么,因为说一个复数比另一个复数“大”是没有意义的。
关于c++ - 对 vector C++ 中的复数进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28182887/