Даже если размер слова в машине равен 32 битам, это не означает, что все типы данных хранятся в границе слова или что минимальной единицей хранения информации является слово. Скажите, что вы должны создать вектор из тысячи символов. Если вы создадите это так:
std::vector<char> v(1000);
он будет использовать около тысячи байтов (обычно). Если вы предполагаете, что минимальная единица хранения - это слово, вы можете объявить его вместо этого следующим образом (думая, что в любом случае каждый символ будет использовать 32-битное слово):
std::vector<int> v(1000);
но это даст вам около 4 байтов * 1000, что в четыре раза больше предыдущего объявления.
То есть, иногда, и в зависимости от того, как вы объявляете свои типы, они упаковываются, поэтому они не используют слово для хранения каждой части информации. В первом случае компилятор / реализация vector<char>
создаст буфер из 1000 байтов для хранения всех упакованных символов.
Таким образом, ответ будет таким: преимущество заключается в экономии места в памяти.