template typename V 1 typename V 2 typename
- Slides: 24
Сабирање и одузимање Прости случајеви template < typename V 1, typename V 2, typename. . . Ts> auto operator+(const Physical. Unit<V 1, Ts. . . > &lhs, const Physical. Unit<V 2, Ts. . . > &rhs) -> Physical. Unit<decltype(lhs. value() + rhs. value()), Ts. . . > { return Physical. Unit<decltype(lhs. value() + rhs. value()), Ts. . . >(lhs. value() + rhs. value()); } • Налик поређењима, сабирамо и одузимамо вредности истих димензија, али закључујемо који је повратни тип Димензионa анализа у језику C++ 29/03/2021 | Nikola Jelić Public | Slide 12 |© Zuhlke 2021
Множење и дељење I Рад са скаларима, једноставан случај template <typename V 1, typename V 2, typename. . . Ts> constexpr auto operator*(const V 1 &lhs, const Physical. Unit<V 2, Ts. . . > &rhs) -> Physical. Unit<decltype(lhs * rhs. value()), Ts. . . > { return Physical. Unit<decltype(lhs * rhs. value()), Ts. . . >(lhs * rhs. value()); } • Множење • Опет је лако, док је дељење лако само ако делимо скаларом закључујемо тип Димензионa анализа у језику C++ 29/03/2021 | Nikola Jelić Public | Slide 13 |© Zuhlke 2021
Множење и дељење II Рад са скаларима, тежи случај template <typename V 1, typename V 2, typename F, typename LD, typename MD, typename TD, typename ED, typename TMD, typename AD, typename LUD, > constexpr auto operator/(const V 1 &lhs, const Physical. Unit<V 2, F, LD, MD, TD, ED, TMD, AD, LUD> &rhs) -> Physical. Unit<decltype(lhs / rhs. value()), std: : ratio_divide<std: : ratio<1>, F>, std: : ratio_subtract<std: : ratio<0>, LD>, …> { return Physical. Unit<decltype(lhs / rhs. value()), std: : ratio_divide<std: : ratio<1>, F>, std: : ratio_subtract<std: : ratio<0>, LD>, …> (lhs / rhs. value()); } • Повратни Димензионa анализа у језику C++ тип изводимо инверзијом фактора и негацијом димензија 29/03/2021 | Nikola Jelić Public | Slide 14 |© Zuhlke 2021
Множење и дељење III Рад са осталим физичким вредностима template <typename V 1, typename F 1, typename LD 1, …, typename V 2, typename F 2, typename LD 2, …> constexpr auto operator*(const Physical. Unit<V 1, F 1, LD 1, …> &lhs, const Physical. Unit<V 2, F 2, LD 2, …> &rhs) -> Physical. Unit<decltype(lhs. value() * rhs. value()), std: : ratio_multiply<F 1, F 2>, std: : ratio_add<LD 1, LD 2>, …> { return Physical. Unit<decltype(lhs. value() * rhs. value()), std: : ratio_multiply<F 1, F 2>, std: : ratio_add<LD 1, LD 2>, …>(lhs. value() * rhs. value()); } • Налик раду са скаларима, али обе вредности имају димензије и факторе Димензионa анализа у језику C++ 29/03/2021 | Nikola Jelić Public | Slide 15 |© Zuhlke 2021
Основна апсолутна јединица template <typename Val. Type, typename Diff. Type, typename Factor, typename Len. Dim, typename Mass. Dim, typename Time. Dim, typename Elcur. Dim, typename Temp. Dim, typename Amm. Dim, typename Lum. Dim> class Absolute. Physical. Unit { public: using Diff. Physical. Unit = Physical. Unit<Diff. Type, Factor, Len. Dim, Mass. Dim, Time. Dim, Elcur. Dim, Temp. Dim, Amm. Dim, Lum. Dim>; …} • Установљујемо однос између апсолутне јединице (нпр. време) и физичке јединице којом меримо разлику између апсолутних вредности (нпр. временску разлику меримо данима, сатима или секундама) Димензионa анализа у језику C++ 29/03/2021 | Nikola Jelić Public | Slide 18 |© Zuhlke 2021
Одузимање две апсолутне вредности class Absolute. Physical. Unit { constexpr Diff. Physical. Unit operator-(const Absolute. Physical. Unit& rhs) const { return Diff. Physical. Unit(value() - rhs. value()); }…} • Једноставна Димензионa анализа у језику C++ имплементација, пошто шаблони раде већину посла 29/03/2021 | Nikola Jelić Public | Slide 19 |© Zuhlke 2021
Додавање апсолутне и релативне вредности template <typename Val. Type, typename. . . Ts> constexpr Absolute. Physical. Unit<Val. Type, Ts. . . > operator+(const Physical. Unit<Ts. . . >& lhs, const Absolute. Physical. Unit<Val. Type, Ts. . . >& rhs) { return Absolute. Physical. Unit<Val. Type, Ts. . . >(lhs. value() + rhs. value()); } • Такође једноставно, захваљујући шаблонима Димензионa анализа у језику C++ 29/03/2021 | Nikola Jelić Public | Slide 20 |© Zuhlke 2021
Сажетак Димензионa анализа у језику C++ 29/03/2021 | Nikola Jelić Public | Slide 22 |© Zuhlke 2021
- Bagian bagian microsoft publisher
- Internal and external issues template
- Ubs organizational chart
- Mediawiki table
- Merger and acquisition template
- Fatigue template
- Kbc question template
- Collaborative inquiry planning template
- Slide todoc.com
- Overload stream insertion operator c++ template
- Presyo ng semento
- Pre incident plan template
- Hazop analysis example
- Science fair board template powerpoint
- Qapi template for nursing homes
- Job interview agenda template
- Sra practice skills standards
- Microbe wanted poster
- Agency pitch scorecard template
- Career lattice template
- Iccv posters
- Cardiac cycle
- Viable system model template
- Template fluxograma
- Instruction execution cycle ppt