Несколько CTE, где предложения ссылаются на столбец CTW

Если вам действительно нужна копия, все равно разумно принять const &. Например:

bool isprint(std::string const &s) {
    return all_of(begin(s),end(s),(bool(*)(char))isprint);
}

Если вы измените это значение, чтобы взять строку по значению, вы в конечном итоге перемещаете или копируете параметр, и в этом нет необходимости. Скорее всего, не только копирование / перемещение скорее дороже, но и новый потенциальный сбой; копия / перемещение может вызвать исключение (например, распределение во время копирования может завершиться с ошибкой), тогда как ссылка на существующее значение не может быть.

Если вам do нужна копия, тогда передача и возврат по значению обычно (всегда?) лучший вариант. На самом деле я вообще не стал бы беспокоиться об этом в C ++ 03, если вы не обнаружите, что дополнительные копии фактически вызывают проблемы с производительностью. Копирование elision кажется довольно надежным для современных компиляторов. Я думаю, что скептицизм и настойчивость людей в том, что вы должны проверить свою таблицу поддержки компилятора для RVO, в большинстве случаев устарели.


Короче говоря, C ++ 11 ничего не меняет в этом отношении, кроме для людей, которые не доверяли копированию.

2
задан WRD299 18 January 2019 в 10:01
поделиться

1 ответ

Вы можете использовать это так - присоединяясь к UserDetail cte

WITH UserDetail (UserId, UserName)
AS
(
    SELECT TOP(10) U.UserId,U.UserName
    FROM UserTable U        
),
UserAction (ActionName,ActionType)
AS
(
    SELECT TOP(10) A.ActionName,A.ActionType
    FROM ActionTable A inner join UserDetail
    on A.UserId = UserDetail.UserId
)

ИЛИ вы можете использовать подзапрос

WITH UserDetail (UserId, UserName)
    AS
    (
        SELECT TOP(10) U.UserId,U.UserName
        FROM UserTable U        
    ),
    UserAction (ActionName,ActionType)
    AS
    (
        SELECT TOP(10) A.ActionName,A.ActionType
        FROM ActionTable A
        where A.UserId in (select UserDetail.UserId from UserDetail)
    )
0
ответ дан fa06 18 January 2019 в 10:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: