首页 > 解决方案 > 卡在使用结构向量

问题描述

这是我的代码。我正在尝试在其中找到最大元素。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;

标签: c++vector

解决方案


第一个奇怪的事情是为什么你实际上有整数时使用字符串。

第二个奇怪的事情是为什么你(有效地)有一个数组向量。

struct str{
    string Data[NUMstr];
};

这是一个包裹在结构中的数组。这vector<str>是一个结构向量,每个结构都包含一个数组。我看不出你需要这个的理由,在你的问题描述中你只有一个十二个数字的列表。

您对迭代器的工作方式也有些困惑。

所以我怀疑你只是感到困惑,让事情变得比他们需要的更复杂。这段代码有效,它是一个简单的整数向量,我怀疑这就是你所需要的。

vector<int> event;
...
int maxElementIndex = max_element(event.begin(), event.end()) - event.begin();
int maxElement = event[maxElementIndex];

推荐阅读