застрял в использовании вектора структуры - PullRequest
0 голосов
/ 12 февраля 2019

Это мой код.Я пытаюсь найти максимальный элемент в этом.Файл Data_Test - это простой текстовый файл, содержащий 12 данных.В моем случае 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 голосов
/ 12 февраля 2019

Первая странная вещь - почему вы используете строки, когда у вас есть целые числа.

Вторая странная вещь заключается в том, что у вас есть (эффективно) вектор массивов.

struct str{
    string Data[NUMstr];
};

Это массив, заключенный в структуру.И это vector<str> - это вектор структур, каждая из которых оборачивает массив.Я не вижу причин, по которым вам это нужно, в описании вашей проблемы у вас просто список из двенадцати чисел.

Вы также немного озадачены тем, как работают итераторы.

Так что я подозреваю васпросто запутываются и усложняют ситуацию, чем нужно.Этот код работает, это простой вектор целых чисел, я подозреваю, что это все, что вам нужно.

vector<int> event;
...
int maxElementIndex = max_element(event.begin(), event.end()) - event.begin();
int maxElement = event[maxElementIndex];
0 голосов
/ 12 февраля 2019

Вам нужно знать логику, как вы хотите, чтобы ваша структура str была преобразована в int.Вы можете конвертировать std::string в int, используя std::stoi, например:

const int i = std::stoi("123");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...