В каком смысле valarray свободен от псевдонимов?

Часто утверждается, что std::valarray был предназначен для устранения некоторых форм псевдонимов, чтобы обеспечить лучшую оптимизацию (например, см. valarray против вектора: почему был введен valarray?)

Кто-нибудь может уточнить это утверждение? Мне кажется, что псевдонимы всегда возможны, если вы можете получить указатель на элемент - который вы можете, потому что operator[] возвращает ссылку.

1 ответ

"Нет наложения" относится к глобальным функциям, таким как cos которые принимают valarray в качестве параметра. cos (или любая другая функция) применяется ко всему массиву, и реализация компилятора и стандартной библиотеки может предположить, что массив не имеет псевдонима и может выполнять операцию с каждым элементом независимо.

Это также относится к таким вещам, как valarray"s operator+, что делает для каждого элемента сложение и т. д.

Другие вопросы по тегам