Как обычно, читая вещи, я понял этот вопрос. Если у меня есть инициализация массива символов, как показано ниже, какова будет временная сложность для этого оператора?Какова временная сложность инициализации массива символов?
char array[] = {'a','b','c','d','e'};
Будет ли он фактически выполнять 5 раз для назначения каждой переменной; как мы делаем в цикле. Если предположение верно, почему это так?
Я бы предположил, что любой неидиотский компилятор выполнит его в 'O (n)' с не более чем 5 назначениями в 5 разных мест памяти. (и, возможно, меньше, если он решит векторизовать) – Mysticial
Если массив такой же, как в вашем примере, компилятор просто поместил бы значения массива в виде последовательного фрагмента памяти в сегменте данных приложений, и пусть 'array' указывает на это. Никакой инициализации или цикла вообще. –
@Joachim: нет, если 'array' находится в стеке, он должен быть инициализирован локально тогда.(Но в стандарте нет ничего, что говорило бы о том, как компилятор должен это сделать, поэтому вопрос не отвечает в ответ - проверьте вывод компилятора. GCC делает 5 байтов здесь.) – Mat