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

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

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

3

Решение

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

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

2

Другие решения


По вопросам рекламы [email protected]