плюс < & строка GT; предопределенный функтор для конкатенации в C ++?

Как говорили другие ответы, оберните каждый вызов qplot() в print() (это R FAQ 7.22 ). Причина в том, что ggplot не печатаются на графическом устройстве до тех пор, пока на них не вызывается print.ggplot. print() - это общая функция, которая отправляется в print.ggplot за кулисами.

Когда вы работаете в repl («read-оцените-print loop», aka shell), возвращаемое значение предыдущей строки ввода автоматически печатается с помощью неявного вызова print(). Вот почему qplot(mtcars[,Var], wt, data=mtcars, xlab=Var) работает на вас. Это не связано с областью действия или циклом for. Если бы вы отправили эту строку в другое место, которое не возвращается непосредственно к реплику, например, в функции, которая возвращает что-то еще, она ничего не сделает.

-1
задан Mikhail 28 February 2019 в 04:03
поделиться

2 ответа

std::plus является функциональным объектом и должен использоваться так же, как и другие функциональные объекты.

Минимальный пример:

#include <iostream>
#include <string>
#include <functional>

int main()
{
    std::string one="one";
    std::string two="two";
    std::string result=std::plus<std::string>()("one","two"); //a temp function object created.
    std::cout << result;

}

См. Демонстрацию здесь .

0
ответ дан P.W 28 February 2019 в 04:03
поделиться

std::plus - это функтор, что означает, что вам нужно создать объект из него:

auto adder = std::plus<>{};
auto result = adder(one, two); // result is onetwo

По этой причине вы никогда не будете использовать это так, как у вас: вы всегда будете просто написать one + two.

Но это означает, что вы можете использовать это так же, как вы использовали бы std::greater и т.п. вместе.

См. Что такое функторы C ++ и их использование? для получения дополнительной информации о функторах.

0
ответ дан Tas 28 February 2019 в 04:03
поделиться
Другие вопросы по тегам:

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