Большое спасибо также за мотивацию! Я докажу вам и себе лично что шарю за программирование и станю отличным спецом.
А можете ли вы посоветовать какие-нибудь материалы по Си
с
.int parsed;
parsed = fscanf(file, "\"%d\"", &x);
if (parsed == 0) {
parsed = fscanf(file, "%d", &x);
}
data = std::vector<Student>();
std::vector<Student>().swap(data);
Если хотите делать массивом, то тогда вам не надо ничего сдвигать memove. Я то думал что вы вставляете элементы по порядковому номеру, а не абсолютному индексу. В вашем случае вам придется увеличивать массив так, чтобы capacity было больше вставляемого id. Может придется в цикле увеличивать массив в VECTOR_SIZE_MULT раз, или высчитывать размер массива в зависимости от id.
Но тут может быть большая проблема с тем, что если id расположенны не плотно, то у вас будет очень большое потребление памяти (вот введу я вам id=2000000000 - вам придется выделить пару десятков гигабайт памяти). Да и работать это будет на порядки медленнее словаря.