c++ - 卡在使用结构向量
问题描述
这是我的代码。我正在尝试在其中找到最大元素。Data_Test 文件是一个包含 12 个数据的简单 txt 文件。在我的情况下,12个数字在下面一一列出:122 135 148 156 178 189 256 114 125 136 630 360
。编译器这么说cannot convert 'main()::str' to 'int' in initialization
。我怎样才能将其转换为int
?
ifstream input("Data_Test.txt");
const int NUMstr = 4;
struct str{
string Data[NUMstr];
};
str vec;
vector<str> event;
int maxElementIndex = max_element(event.begin(), event.end()) - event.begin();
int maxElement = *max_element(event.begin(), event.end());
int minElementIndex = min_element(event.begin(), event.end()) - event.begin();
int minElement = *min_element(event.begin(), event.end());
cout << "maxElementIndex:" << maxElementIndex << ", maxElement:" << maxElement;
cout << "minElementIndex:" << minElementIndex << ", minElement:" << minElement;
解决方案
第一个奇怪的事情是为什么你实际上有整数时使用字符串。
第二个奇怪的事情是为什么你(有效地)有一个数组向量。
struct str{
string Data[NUMstr];
};
这是一个包裹在结构中的数组。这vector<str>
是一个结构向量,每个结构都包含一个数组。我看不出你需要这个的理由,在你的问题描述中你只有一个十二个数字的列表。
您对迭代器的工作方式也有些困惑。
所以我怀疑你只是感到困惑,让事情变得比他们需要的更复杂。这段代码有效,它是一个简单的整数向量,我怀疑这就是你所需要的。
vector<int> event;
...
int maxElementIndex = max_element(event.begin(), event.end()) - event.begin();
int maxElement = event[maxElementIndex];
推荐阅读
- html - 如何在不进入无限循环(Angular)的情况下调用一次按钮?
- java - 如何将base64字符串转换为sha256?
- azure - 在已经创建读取 CSV 数据的函数之后将 CSV 数据插入 Azure SQL DB?
- hibernate - 从 oracle 11g 迁移到 oracle 12c 后的问题,面临未知的 Oracle 主要版本 [11]
- python - 在 Bokeh 中使用线性颜色映射器
- java - JavaFX 优化了 TreeView 上 TreeItems 的异步延迟加载
- python-3.x - 获取从“/etc/group”排序的组 ID
- java - 如何从意图额外的字符串中获取数值
- c# - 将 Object 类型转换为 DateTimeOffset
- assembly - 在汇编中使用循环反转字符串