卡在结构向量的使用中

时间:2019-02-12 08:08:56

标签: c++ vector

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

2 个答案:

答案 0 :(得分:1)

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

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

struct str{
    string Data[NUMstr];
};

这是包装在结构内部的数组。这个vector<str>是结构的向量,每个结构都包装一个数组。我认为没有理由需要它,在问题描述中,您仅列出了十二个数字。

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

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

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

答案 1 :(得分:0)

您需要了解逻辑,如何将您的str结构转换为int。您可以使用std::stoistd::string转换为int,例如:

const int i = std::stoi("123");