C++と色々

主にC++やプログラムに関する記事を投稿します。

2018-01-01から1年間の記事一覧

C++でクラスに外の参照を持つ方法

C++

気になったので考察してみました。 結論 std::shared_ptr 以外で参照を持つのは寿命管理が難しい 動機 オブジェクトが参照型である言語の場合、普通にクラスに別オブジェクトを持った場合それは参照になります。例えばJavaだと class A { private int value;…

DxLibとCoroutineを合わせてみた

C++

C++20にコルーチンが提案されており、Visual Studio 2015以上で使うことが出来るため試してみました。この記事のコードはVisual Studio 2017 Update8で動作を確認しました。コンパイラオプションに /await が必要です。 コルーチン自体の説明は省略します。…

Boost.HOFについて

Boost 1.67.0から Boost.HOF というライブラリが追加されました。 HOFはHigher Order Functions(高階関数)の略で、関数や関数オブジェクトのユーティリティを提供するライブラリです。 ヘッダーオンリーでC++11以上の環境で使えます。 3つのコンポーネントが…

Visual Styleを適用する

WinAPIで普通にボタンなどのコントロール(WinAPI的にはWindow)を作ると昔ながらのデザインになってしまいます。各Windowsのバージョンのデザインのコントロールを使いたいですよね? そんな時、Visual Styleを設定します。 Visual Styleの設定はプロジェクト…

自分用のCMakeのプロジェクトテンプレート書いてみた

こちら github.com 動機 既にCMakeのテンプレートはいくつか存在しています。例えば github.com などです。しかしこれらはファイルや設定の量が多く、もしかしたら大規模なプロジェクトや設定したことが多い場合では良いのかもしれないですが、もっと小さい…

iTunesをGoogle Play Musicと同期しようとしたら苦戦した

やりたかったこと ローカルのiTunesの曲を更新したらGoogle Play Musicが同期して、Android端末で聴けるようにしたかった。iTunesで曲を入れたときに、iPodをUSBで接続して同期するのが面倒だったため。 Google Play MusicにローカルのiTunesと同期する設定…

CentOS 6にopenssl1.0.2以上を使用したnginx1.10以上を入れる

モチベーション 自分が使ってるサーバーはcentos 6で、既にnginxが導入済みであり、http2に対応させたかったのが発端です。 ChromeはALPNのみ対応していますが、ALPN対応のopensslは1.0.2以上であり、CentOS 6のopensslは1.0.1系のため 自分でビルドしてopen…

CentOS 6でgitを2.2.0に更新した

ハマったので記録します。 $ cat /etc/redhat-release CentOS release 6.5 (Final) な環境で、 yum install(update) git をしても1.7.1しか入りませんでした。gitのバージョンが古いことでgit cloneなどが一部使えなくなったためgitを更新することにしました…

Visual C++ 15.6 で並列 for_each

Visual Studio 2017の15.6からC++17から入るParallel Algorithmsが部分的に実装されました。 以下の並列for_eachコードが動きようになります。 #include <algorithm> #include <execution> #include <iostream> #include <vector> int main() { // サイズ10のvectorを作って0, 1, 2, ..., 9で埋める s</vector></iostream></execution></algorithm>…

std::bindとstd::mem_fnはデータメンバも束縛できる

C++

知らなかった。std::bindとstd::mem_fnはデータメンバを束縛して関数風にアクセスすることが出来ます。もちろんそのスコープでアクセス可能なデータメンバに限ります。 #include <functional> #include <iostream> struct X { int data = 3; }; int main() { X x; auto x1 = std::b</iostream></functional>…