Как создать массив объектов разных размеров
хотелось бы получить массив arr
объектов разных размеров и второй массив sizes
хранящий размеры его объектов.
Немного конкретики,
основная задача, хочу написать функцию
void sort(void* arr, void* sizes, int nelts, xcmp_t cmp)
nelts
количество элементов,
cmp
сравнение, допустим она уже реализована.
я, наверное, понимаю как работать с arr
но не понимаю как ее реализовать и задать
Ответы (1 шт):
Автор решения: Stanislav Volodarskiy
→ Ссылка
Сложите размеры объектов и выделите общий буфер:
unsigned sizes[] = {1, 2, 3};
unsigned nelts = sizeof(sizes) / sizeof(sizes[0]);
unsigned size = 0;
for (unsigned i = 0; i < nelts; ++i) {
size += sizes[i];
}
void *arr = malloc(size);
P.S. Объектами в этом общем буфере, вообще говоря, нельзя пользоваться. Но если соблюдать некоторые ограничения, то почему нет. Например, если объекты – строки символов.