Я смущен насчет использования boost :: ref. Я не понимаю, почему любой хотел бы сделать следующее -Использование boost :: ref для передачи ссылки на функции, которые принимают значения
void f(int x)
{
cout << x<<endl;
x++;
}
int main(int argc, char *argv[])
{
int aaa=2;
f(boost::ref(aaa));
cout << aaa<<endl;
exit(0);
}
Какая польза прохождения реф к функции. Я всегда могу передать значение. И это не то, что ref фактически передается. В приведенном выше значении aaa в основном остается 2.
Где именно ускорение ref полезно?
Можно ли использовать boost :: ref в этом сценарии. Я хочу передать итератор refernce в std :: sort. обычно сортировка работает на копиях итератора - будет увеличиваться :: ref заставляет работать и для ссылок? (без каких-либо изменений в std :: sort)
oki понять, но вы можете объяснить, как это работает. template void f (_T x) {x ++; } int main (int argc, char * argv []) {int aaa = 2; f > (boost :: ref (aaa)); cout << aaa <> aaa; Выход (0); } Значение напечатано 3. Не понимаю, как функция x i стала ссылкой? –
Rohit
@ user2161003: Явным образом выписывая часть 'reference_wrapper' (что необязательно), вы ответили на свой собственный вопрос: шаблон создается экземпляром типа« ссылочная оболочка »(возвращается' ref() '), и это действует как ссылка на переменную, которую она обертывает. –
но как? и объект reference_wrapper не имеет оператора ++. как работает x ++? – Rohit