Я создал набор записей, используя структуры, вектор и добавил пару записей.Это код, который делает это.Это должно работать как есть - на Arduino / ESP8266 / ESP32.
#include <string>
#include <vector>
struct student {
std::string studentName; // I only load this once at startup. So can be const
std::string studentSlot; // <= This should be updateable
bool wasPresent; // <= This should be updateable
student(const char* stName, const char* stSlot, bool stPresent) :
studentName(stName),
studentSlot(stSlot),
wasPresent(stPresent)
{}
};
std::vector<student> studentRecs;
void setup() {
delay(1000);
Serial.begin(115200);
// Add couple of records
student record1("K.Reeves", "SLT-AM-03", false);
student record2("J.Wick", "SLT-PM-01", true);
studentRecs.push_back(record1);
studentRecs.push_back(record2);
}
void loop() {
Serial.println();
// Get the size
int dsize = static_cast<int>(studentRecs.size());
// Loop, print the records
for (int i = 0; i < dsize; ++i) {
Serial.print(studentRecs[i].studentName.c_str());
Serial.print(" ");
Serial.print(studentRecs[i].studentSlot.c_str());
Serial.print(" ");
Serial.println(String(studentRecs[i].wasPresent));
}
// Add a delay, continue with the loop()
delay(5000);
}
Я могу читать отдельные записи, используя цикл for.Я не уверен, что это лучший способ, но он работает.
Мне нужно иметь возможность сделать пару вещей с этим набором записей.
1) Поиск / найти запись по studentName
.Я могу найти его по циклу, но это кажется мне неэффективным и уродливым.
2) Уметь обновлять studentSlot
и wasPresent
С некоторыми исследованиями и экспериментами я обнаружил, чтоЯ мог бы сделать это, чтобы изменить wasPresent
studentRecs[0].wasPresent = false;
Опять же, я не уверен, что это лучший способ, но он работает.Я хочу иметь возможность изменить studentSlot
, и я не уверен в этом, поскольку я впервые имею дело со структурами и вектором.StudentName является постоянным (мне нужно только загрузить его один раз при запуске), где studentSlot может измениться во время выполнения.Я не уверен, как это изменить.Может потребоваться, чтобы я удалил const char *, сделал что-то вроде strcpy или что-то еще, но я застрял в этом.Короче говоря, есть 3 вещи, которые мне нужно немного помочь по
1) Поиск / найти запись по studentName
2) Уметь обновлять studentSlot
3) Удалить всезаписи. Примечание: Я только что понял, что studentRecs.clear()
делает это
Я не уверен, что смог объяснить это достаточно ясно.Так что любые вопросы, пожалуйста, стреляйте.Спасибо.