дополнительная работа, вероятно, не стоит того, если Вам действительно действительно не нужна эффективность. у Вас, вероятно, будет намного лучшая эффективность просто при помощи оператора + = вместо этого.
Теперь после той правовой оговорки, я отвечу на Ваш фактический вопрос...
эффективность строкового класса STL зависит от реализации STL, который Вы используете.
Вы могли , эффективность гарантии и имеет больший контроль сами путем выполнения конкатенации вручную через c встроенные функции.
, Почему оператор + не эффективен:
Смотрят на этот интерфейс:
template
basic_string
operator+(const basic_string& s1,
const basic_string& s2)
Вы видите, что новый объект возвращается после каждого +. Это означает, что новый буфер используется каждый раз. При выполнении тонны дополнительных + операции, это не эффективно.
, Почему можно сделать это более эффективным:
Соображения для реализации:
структура данных Веревки:
, Если Вам нужны действительно быстрые конкатенации, рассматривают использование структура данных веревки .
As of PHP 5.3 you could also use the short ternary operator:
$exTime = get_cfg_var("session.gc_maxlifetime") ?: 1440;
This is basically your anticipated functionality but without having to declare the function. In PHP versions prior to 5.3, you should go with André's answer.
Keep in mind though, that calling the function might throw warnings, if it is about to check arrays in which keys aren't specified:
$array = array(
0 => array(
0 => 100
)
);
$example = isNull($array[0][1], 200);
Как насчет добавления этой небольшой функции?
function isnull($var, $default=null) {
return is_null($var) ? $default : $var;
}
Я не знаю ни одной функции, которая выполняет то, что вы хотите, но поскольку это не , трудно реализовать, вы могли бы то же самое делайте, если используете его много.