HTML datepicker () поддерживает атрибут
min
/ max
, но не поддерживается широко .
Тем временем вы можете рассмотреть возможность использования bootstrap-datepicker , v1.2.0 включен в github .
Ссылки:
Чтобы установить массив указателей на нули в списке инициализатора конструктора, вы можете использовать инициализатор ()
struct S {
int *a[100];
S() : a() {
// `a` contains null pointers
}
};
К сожалению, в текущей версии языка инициализатор ()
имеет вид единственный инициализатор, который вы можете использовать с членом массива в списке инициализатора конструктора. Но, видимо, это то, что вам нужно в вашем случае.
()
оказывает тот же эффект на массивы, выделенные с помощью new[]
int **a = new int*[100]();
// `a[i]` contain null pointers
В других контекстах вы можете использовать агрегатный инициализатор {}
для достижения того же эффекта
int *a[100] = {};
// `a` contains null pointers
Обратите внимание, что абсолютно не нужно втиснуть 0
или NULL
между {}
. Пустая пара из {}
будет в порядке.
Вы можете переключиться с массива на std::vector
и использовать
std::vector<T*> v(SIZE);
Значения будут инициализированы с помощью NULL
с. Это предпочтительный способ C ++.
Обновление: начиная с C ++ 11, есть еще один способ: использование
std::array<T*, SIZE> array = {};
Это ведет себя больше как исправленная версия массива в стиле C (в частности, избегает динамического распределения) , переносит его размер вокруг и не затухает до указателя. Размер, однако, должен быть известен во время компиляции.
Обычно массив не будет инициализирован по умолчанию, но если вы инициализируете один или несколько элементов явно, любые оставшиеся элементы будут автоматически инициализированы равными 0. Поскольку 0 и NULL
эквивалентны, вы можете инициализировать массив указателей на NULL
как это:
float * foo[42] = { NULL }; // init array of pointers to NULL
Я не уверен, как это сделать. Я слышал, что указатель по умолчанию установлен в NULL, хотя я не знаю, гарантировано ли это / в стандарте C ++.
Это не гарантируется стандартом C ++. Встроенные типы (например, указатели) заполняются мусором, если не указано иное.
Я также не уверен, что инициализация с помощью нового оператора по сравнению с обычным распределением также может иметь значение.
Что вы подразумеваете под «нормальным распределением»? Если вы говорите об автоматической переменной, то вы можете сделать это:
MyType * pointers[2] = {}
и указатели должны быть инициализированы в NULL.
Если у вас есть массив-член, то его нельзя инициализировать, если только он не является статическим элементом. Если массив не является статическим членом, вам придется заполнить его внутри тела конструктора.
Тем не менее, скорее всего, вам действительно лучше использовать std :: vector
. За исключением технических причин, таких как недоступность стандартного STL для вашей платформы или немного меньшая производительность, std :: vector
лучше, чем массив по всем без исключения критериям. Если проблема в производительности, убедитесь, что вы профилировали и знаете по цифрам, что это проблема.