タグ

ブックマーク / faithandbrave.hateblo.jp (4)

  • Objective-CのクラスをC++でラップする方法 - Faith and Brave - C++で遊ぼう

    Objective-C と C++ のコードは、 *.mm 形式のファイルの中では混在させることができます。 なので、 Objective-C のライブラリを C++ でラップしてしまえば、ほとんどが C++ で組めるようになります。 以下はその方法 *.h では混在コードを書けないので、 C++ のクラスのメンバとして Objective-C のオブジェクトを持つには PImplイディオム を使用します。 Cpp.h #ifndef CPP_INCLUDE #define CPP_INCLUDE #include <boost/shared_ptr.hpp> class CppHoge { struct Impl; boost::shared_ptr<Impl> pImpl_; public: CppHoge(); ~CppHoge(); void doSomething(); }; #

    Objective-CのクラスをC++でラップする方法 - Faith and Brave - C++で遊ぼう
    beakmark
    beakmark 2013/10/06
    ARCなんかなかった10年くらい前から shared_ptr で Objective-C オブジェクトをラップするのは普通にやってたよ /
  • Boost.Algorithm clamp - Faith and Brave - C++で遊ぼう

    Boost 1.50.0で、Boost Algorithmライブラリが新たに追加されました。これからいくつか紹介していこうと思います。 今回はclamp()です。 clamp()は、最小値と最大値を設定した上で値を渡すと、その範囲内に値を収めてくれる関数です。 意味的には、min(max(minval, x), maxval)と同じになります。 以下の例では、値が0から10の範囲外だったらその範囲に収める、ということをしています。 #include <iostream> #include <boost/algorithm/clamp.hpp> int main() { using boost::algorithm::clamp; int x = 11; x = clamp(x, 0, 10); int y = -1; y = clamp(y, 0, 10); std::cout << x

    Boost.Algorithm clamp - Faith and Brave - C++で遊ぼう
    beakmark
    beakmark 2013/01/14
    via @cpp_akira さん。クランプする、はやはり、サチる、と同義っぽい/
  • C++Now! 2012に参加してきました - Faith and Brave - C++で遊ぼう

    毎年5月にアメリカのコロラド州アスペンで開催されているBoostConというBoost C++ Librariesのカンファレンスが今年からC++Now!という名前に変わり、今回それに近藤さん id:redboltz と一緒に参加してきました。 非技術的な内容は、後ほどBloggerの方に書こうと思います。 1週間の濃厚な日々の記録のため、けっこう長くなってしまうことをご容赦ください。 0日目(日曜日) Registration 初日は16:00から参加登録 + 雑談を行うRegistrationがありました。会場に入った途端自己紹介もしてないのに「Are you cpp_akira?」と話しかけてきた外人さんがいて、「あ、これが噂の日語を話せるRay Fixか!」とすぐに把握して近藤さんに紹介されつつ少し話してました。その後、今回Boost.Coroutineの発表を行ったNat Go

    C++Now! 2012に参加してきました - Faith and Brave - C++で遊ぼう
    beakmark
    beakmark 2012/05/23
    「英語話せなくても大丈夫だよ。ぼくらにはC++という共通言語があるじゃないか!」 /
  • C++0x Placement Insert(配置挿入) - Faith and Brave - C++で遊ぼう

    C++0x では、各コンテナに emplace/emplace_back/emplace_front/emplace_hint というメンバ関数が追加されます。 こういうクラスがあった場合 struct something { something(int, int, int); }; something をコンテナの要素として追加する場合、 C++03 では以下のようにしていました。 vector<something> v; v.push_back(something(1, 2, 3)); この方法では、 something のコンストラクタによる一時オブジェクトの生成と、コピーのコストが発生します。 Placement Insert では、可変引数テンプレートによって要素型のコンストラクタ引数を受け取ることで 要素をコンテナ内で一度だけ生成し、コピーのコストをなくします。 vector<

    C++0x Placement Insert(配置挿入) - Faith and Brave - C++で遊ぼう
    beakmark
    beakmark 2009/01/18
    なるほど、RVO はあるけど、引数については同様の最適化がないからね。。。。(たぶん)
  • 1