Внутри структуры, чтобы минимизировать прокладку, следует объявить наименьшие элементы, исправить?
Это зависит. В некоторых случаях вы можете оптимизировать поведение кэша, что может не обязательно привести к упорядочению. В большинстве реализаций упорядочение вещей таким образом приведет к структуре наименьшего размера (с наименьшим количеством дополнений), но это не гарантируется стандартом или чем-то подобным.
БППП :: вектор выделяет память на участке, который не обязательно смежными, правильно?
Неправильное. vector
требуется использовать один непрерывный участок. См. N3936 23.3.6.1/1:
A vector
представляет собой контейнер последовательности, который поддерживает итераторы с произвольным доступом. Кроме того, он поддерживает (амортизируется) постоянное время вставки и стирания операций в конце; вставлять и стирать в середине, принимать линейное время. Управление хранилищем обрабатывается автоматически, хотя можно дать подсказки для повышения эффективности. Элементы вектора хранятся смежно, что означает, что если v
является vector<T, Allocator>
, где T
- это некий тип, отличный от bool
, то он соответствует идентификатору &v[n] == &v[0] + n
для всех 0 <= n < v.size()
.
В пределах структуры, сколько бит следует рассматривать зЬй :: вектор будет при рассмотрении его размещения в пределах структуры относительно заполнения?
Vector ничего не видит о членах вашей структуры; он знает только размер.
Рассмотрим гипотетическую машину, которая имеет 4 байта int
с и требует все быть 5 байт выравнивается. (Я не знаю такой машины, но стандарт написан таким образом, что такая машина будет возможно) В этом случае структура, как:
struct X
{
int a;
int b;
char c;
char d;
};
будет тратить пространство, потому что
struct X
{
int a;
char c;
int b;
char d;
};
будет содержать каждый из char
s, сохраненный в неиспользованном 5 -м байт. Именно поэтому стандарт оставляет эту реализацию определенной.
*** std :: vector выделяет память на участке, который не обязательно смежный, правильный? *** Неверно. – drescherjm
*** Внутри структуры, чтобы минимизировать заполнение, нужно объявить наименьшие элементы, исправить? *** Реализация определена. – drescherjm
@ drescherjm: И, естественно, обратное нормально работает одинаково хорошо. – Deduplicator