![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Using boost::refBoost , Chapter 1. Boost.Numeric.Odeint , odeint in detail
|
![]() | Home | Libraries | People | FAQ | More |
В одейте все функции системы и наблюдатели передаются по значению. Например, если вы называете метод<do_step
>конкретного степпера или функции интеграции, ваша система и ваш степпер будут переданы по значению:
rk4.do_step( sys , x , t , dt ); // pass sys by value
Такое поведение подходит для большинства систем, особенно если ваша система не содержит никаких данных или только несколько параметров. Тем не менее, в некоторых случаях вы можете содержать большое количество данных с функцией системы, и передача их по стоимости нежелательна, поскольку данные будут скопированы.
В таких случаях можно легко использовать<boost::ref
>(и его относительное<boost::cref
>), который передает свой аргумент посредством ссылки (или постоянной ссылки). odeint распаковывает аргументы и не копирует ваш системный объект:
rk4.do_step( boost::ref( sys ) , x , t , dt ); // pass sys as references
Такой же механизм можно использовать для наблюдателей в функциях интеграции.
![]() | Tip |
---|---|
Если вы используете C++11, вы также можете использовать< |
Статья Using boost::ref раздела Chapter 1. Boost.Numeric.Odeint odeint in detail может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: odeint in detail ::
реклама |