2019/06/26に開催します。
今回から、勉強会ロゴを正式なものにしました。ロゴはzakさんに作っていただきました。プログラミングの魔導書の表紙、各記事のアイコンからずっとお世話になってます。
2019/06/26に開催します。
今回から、勉強会ロゴを正式なものにしました。ロゴはzakさんに作っていただきました。プログラミングの魔導書の表紙、各記事のアイコンからずっとお世話になってます。
リリースノートは、いつものようにboostjpサイトで翻訳 + 情報補完したものを公開しています。
新ライブラリは、expectedのバリエーションを提供するOutcomeライブラリ、多次元ヒストグラムを扱うHistogramライブラリの2つです。
非推奨に近い状態だった線形代数ライブラリuBLASが、Google Summer of Codeでのコントリビュートを受けていろいろ機能追加されています。
リリースされたばかりのVisual Studio 2019はサポート対象外です。
C++20は3月の国際会議ですごく巨大なアップデートになって自分で調べるのがしんどくなってきました。
だれかに相談しながら調べたいな、と思って自社の会議室を使って少人数で集まっていました。
会の性質として、近くの人から相談がきたときに「このURLのページを見てみて」とかをさっと渡せるようにしたい、というのがあったので、Googleドキュメントを参加者間で共有して、メモ書きや課題の共有ができるようにしました。そのドキュメントは編集をロックして、イベントページに添付してあります。
参加者から、またやりたい、というリクエストがあったので、来月もやります。ずっと続く性質の会ではないかもしれませんが、困ったときに相談ができる相手がこういった場で作れると、別の機会でも協力しあえたりしてよいかと思います。
会の目的としては、アウトプットするためのインプットをする場がほしい、というものなので、自分が学んで満足したい、というのは会の範囲外としています。
lower_bound()
とupper_bound()
でこんなことができたんだなーと発見できて楽しかったので、時間で区間を指定して抽出するのをやってみました。
簡易的なBoost.Interval Containerとして使えていいですね。
#include <iostream> #include <vector> #include <string> #include <algorithm> int main() { std::vector<std::string> times = { "2018/12/31 00:00", "2019/01/01 00:01", "2019/01/01 01:15", "2019/01/01 03:30", "2019/01/01 08:23", "2019/01/01 10:50", "2019/01/01 13:20", "2019/01/01 15:30", "2019/01/01 18:00", "2019/01/03 23:59", }; // 日付2019/01/01の午前中だけ取り出す auto first = std::lower_bound(times.begin(), times.end(), "2019/01/01 00:00"); auto last = std::upper_bound(times.begin(), times.end(), "2019/01/01 12:00"); for (; first != last; ++first) { std::cout << *first << std::endl; } }
出力:
2019/01/01 00:01 2019/01/01 01:15 2019/01/01 03:30 2019/01/01 08:23 2019/01/01 10:50
補足ですが、UTF-8とかの文字コードを指定しなくてもC++の規格で文字'0'
から'9'
までは順序が規定されているので、文字列の辞書順比較で日時の大小が決められます。月をJan、Febとかにしたら意図した動作にはなりません。数字以外の区切り文字とかが共通ならいけるので、「2019年01月01日」とかなら大丈夫です。月と日が2桁ゼロ埋めで揃えないといけない縛りとかはあります。
境界値のお試し。
#include <iostream> #include <vector> #include <string> #include <algorithm> int main() { std::vector<std::string> times = { "2018/12/31 00:00", "2019/01/01 00:00", "2019/01/01 00:01", "2019/01/01 01:15", "2019/01/01 03:30", "2019/01/01 08:23", "2019/01/01 10:50", "2019/01/01 11:59", "2019/01/01 12:00", "2019/01/01 13:20", "2019/01/01 15:30", "2019/01/01 18:00", "2019/01/03 23:59", }; // 日付2019/01/01の午前中だけ取り出す auto first = std::lower_bound(times.begin(), times.end(), "2019/01/01 00:00"); auto last = std::upper_bound(times.begin(), times.end(), "2019/01/01 12:00"); for (; first != last; ++first) { std::cout << *first << std::endl; } }
出力:
2019/01/01 00:00 2019/01/01 00:01 2019/01/01 01:15 2019/01/01 03:30 2019/01/01 08:23 2019/01/01 10:50 2019/01/01 11:59 2019/01/01 12:00
日程が決まりました。2019/04/17 (水) 19:00〜21:00です。
前回、抽選期間が長すぎたので、今回は1.5日程度で抽選します。このあたりはまだまだ試行錯誤しています。
Boost 1.69.0がリリースされました。リリースノートはいつものように、日本語訳 + 情報補完したものをboostjpサイトで公開しています。
今回、新ライブラリとして安全な整数演算をするためのライブラリSafe numericsが入りました。
また、ライブラリをビルドするときに、Boost.Buildではデフォルトでvisibilityがhiddenになります。
Boost.Systemがヘッダオンリーになって使いやすくなっています。
その他、リリースノートを参照してください。