C++简单的矢量程序中从 int 类型转换为非标量类型
C++ conversion from int to non-scalar type in a simple vector program
我只是想让你告诉你,我在阅读了许多关于我收到的错误的帖子后写这篇文章:"从'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 <<a....'中的"运算符<<"不匹配。我也感谢您对此的反馈。
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++11
auto c = nth_element(...);
cout << *a << ' ' << *b << ' ' << *c << endl; // dereference to print the values
代码中存在一些错误。1. 声明std::vector<int>
,但使用std::vector<double>::iterator
。什么是正确的类型 - 整数或双精度?2.max_element(( 和 min_element(( 返回std::vector<Type>::iterator
,您正在尝试在右侧取消引用迭代器并将其值分配给左侧的迭代器变量类型。使用int a = *max_element(vector1.begin(), vector1.end());
3. nth_element(( 不返回任何内容。使用nth_element(vector1.begin(), vector1.begin() + vector1.size()/2, vector1.end());
- 将双精度值分配给 int 数组时的类型转换
- 使用模板在size_t和int之间进行隐式类型转换
- 复制初始化 - 从 'int' 类型转换为非标量类型
- 无法将 int 类型转换为时间类型(我的类类型)
- 避免将 Int 转换为双重类型转换舍入
- 类型转换<int>的舍入问题
- 类型转换指向 int 的 void 指针时出错
- 为什么C/C++会自动将char/wchar_t/short/bool/enum类型转换为int
- 如何将 void 指针类型转换为 int 指针,然后在其中存储 int
- C++简单的矢量程序中从 int 类型转换为非标量类型
- 将指针类型转换为int会崩溃
- 将无符号int类型转换为无符号长int C++
- 类型转换时这是什么意思 *(int*)&x?
- 将常量字符* 类型转换为 int 数组
- C++类型转换 int * 到类
- C/C++ 类型转换将 int** 转换为 const int**
- 预期的类型说明符,并且无法在初始化时转换“int*”
- c++需要将int类型转换为无符号int
- 从“char*”到“char”[-fpermissive]的转换无效,数组下标的类型“char[int]”无效
- 类型转换(int**)和int(*)的区别