我只想让你告诉你,我在读完许多有关我所遇到的错误的文章后才写这篇文章:“从'int'转换为非标量类型。”但是对于我自己的程序,我无法在此应用任何答案进行修复。希望您能对以下特定代码给我一个评论/意见/建议或关注。 vector<double>::iterator a = *max_element(vector1.begin(), vector1.end()); vector<double>::iterator b = *min_element(vector1.begin(), vector1.end()); vector<double>::iterator c = *(nth_element(vector1.begin(), vector1.begin() + vector1.siz最后一个快速的问题:以下方法分别打印出变量a,b,c的值是否正确?我的编译器说'std :: cout cout << a << b << c << endl;非常感谢! 在收到您的答复之前,我将继续关注。以下是我的代码供您考虑 #include <iostream> #include <fstream> #include <algorithm> #include <vector> using namespace std;int main(){ifstream ifs("foo.txt");//initiailize a vector of integers:vector<int> vector1;double d;while(ifs >> d){ vector1.push_back(d);}int allnumb = vector1.size();for(int i = 0; i < allnumb; i++){ vector<double>::iterator a = *max_element(vector1.begin(), vector1.end()); vector<double>::iterator b = *min_element(vector1.begin(), vector1.end()); vector<double>::iterator c = *(nth_element(vector1.begin(), vector1.begin() + vector1.size()/2, vector1.end())); cout << a << b << c << endl; } return 0; } 最佳答案 max_element和其他函数返回迭代器。然后,您可以使用*取消引用它们以获得它们所引用的int值,最后尝试使用这些int值来初始化不同的迭代器类型。这没有任何意义,因此是第一个错误。然后尝试打印不可打印的迭代器,因此出现第二个错误。也许您想要这些值:int a = *max_element(...);int b = *min_element(...);int c = *nth_element(...);cout << a << ' ' << b << ' ' << c << endl; // add spaces for readability或您想要正确类型的迭代器:vector<int>::iterator a = max_element(...);auto b = min_element(...); // a more convenient alternative, since C++11auto c = nth_element(...);cout << *a << ' ' << *b << ' ' << *c << endl; // dereference to print the values关于c++ - 在简单的 vector 程序中从int到非标量类型的C++转换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29230078/
10-11 10:47