Я хочу сравнить объекты класса/структуры C++. В C большую часть времени вы знаете точный размер struct
, добавляя размеры отдельных полей (предполагая, что компилятор не добавляет отступы). Следовательно, можно использовать функцию memcmp() на двух объектах, чтобы сравнить их очень быстро. Я не уверен, что то же самое работает для C++. Это потому, что класс также определение функций и, возможно, некоторые другие скрытые вещи (некоторая RTTI информация может быть? Таблица виртуальной функции даже?)Сравнение структур в C vs C++
Быстрой программа с простой структурой, содержащей int
и char
членов и функцию показала, что размер от структуры sizeof(int)+sizeof(char)
.
У меня есть один большой класс структуры с простыми типами данных int, char и т. Д. (Но их большое количество). Я хочу время от времени сравнивать объекты. Я не могу перегрузить оператора ==
, так как это позволит им сравнивать каждое поле по полю. В C я могу сравнить за один раз, используя memcmp()
. Любые предложения для C++? Могу ли я использовать memcmp()
напрямую? Я не хочу memcmp(), чтобы не потому, что некоторое другое значение, как виртуальная таблица указателей функции отличается (но все поля фактически равны) (я использую г ++)
Учитывая несоответствующую упаковку (например, struct z {x char; y double;};), вы получите заполнение в C-структурах. Было бы глупо предположить, что в целом нет прокладки, хотя вы можете свести к минимуму вероятность того, что это произойдет, если вы будете осторожны. –