タグ

C++とconstに関するtyosuke2011のブックマーク (12)

  • C++でブルームフィルタを実装する方法 | POSTD

    ブルームフィルタとは、「ある要素が集合のメンバである可能性があるか、それとも確実に集合のメンバではないか」を効果的に確認することのできるデータ構造です。この記事では、C++でブルームフィルタを実装する簡単な方法をご紹介します。 ブルームフィルタとは何なのか 、また、 その背後にある多くの数学的要素 については紹介していませんので、ご了承ください。これらのトピックに関しては、素晴らしいリソースがあるので、そちらを参考にしてください。 インターフェイス まずは、ブルームフィルタを定義していきましょう。ここでは、3つのパブリック関数を定義していきます。 コンストラクタ ブルームフィルタにアイテムを追加する関数 アイテムがブルームフィルタにある可能性を確認するためのクエリを行う関数 また、フィルタの状態を保持するビットの配列を含んだ、メンバ変数についても定義します。 #include <vecto

    C++でブルームフィルタを実装する方法 | POSTD
  • いっつも忘れるC++ ファイル入出力関数を図にしてみた - Qiita

    C++ ファイル入出力関数 継承関係 継承関係については、 https://www.ntu.edu.sg/home/ehchua/programming/cpp/cp10_IO.html 真ん中らへんの図 がわかりやすそうです。 ファイル入出力関数のダイアグラム さて、C++でファイルの入出力を扱うに当たって、C言語のscanf系やprintf系は結構落とし穴があるので、C++のifstreamとか〇〇streamとかを使いたいのですが、いつも使い方を忘れてしまいます(私だけではないはず)。そこで、普段使いに便利なダイアグラムをつくってみました!: ※2については、https://www.jpcert.or.jp/sc-rules/c-int06-c.html あたりも参考にしてください。あ、strtol関数はstdlib.hをincludeです。 サンプル # include <stri

    いっつも忘れるC++ ファイル入出力関数を図にしてみた - Qiita
  • C++メモ STLをできるだけ使ってCSVを読み込んでみる

    野暮用で必要になったので。 ざっくりこんな感じ。 fstreamクラスを使ってファイルを開く istringstreamクラスを使って区切り文字で文字列を分ける vectorクラスを使って分けた文字列をリストにする んで、コード。 今回はCSVを読み込むのはメソッドにしとく事にして、こんな感じ。 // インクルード #include <iostream> #include <string> #include <vector> #include <fstream> #include <sstream> // ※istringstreamを使うために必要 // 名前空間 using namespace std; // // CSVを取得する // filename 読み込むファイル名 // table 読み込んだCSVの内容 // delimiter 区切り文字(今回はデフォルトでカンマ) /

    C++メモ STLをできるだけ使ってCSVを読み込んでみる
  • C++のムーブと完全転送を知る - Fixstars Tech Blog /proc/cpuinfo

    社内勉強会、今期(と言ってももうあと1ヶ月もないですが)は、数理最適化勉強会と、Effective Modern C++輪読会をしています。この記事は、後者のEffective Modern C++輪読会で、『Effective Modern C++』5章の一部を輪読した時の資料を流用したものです。 C++11と言えば、昔のC++(03)から色々あって多くの機能が追加されとても便利になったバージョンです。さらに、C++14は11では間に合わなかった・忘れていた色々な便利なものを補填したもので、Effective Modern C++輪読会は、『Effective Modern C++』を教科書にしながらこのC++11/14について学ぶ会になっています。 時は既に2016年、gccもclangもMSVC++も概ねC++14が使えるようになっており、もはやC++14が使えないコンパイラにはC+

    C++のムーブと完全転送を知る - Fixstars Tech Blog /proc/cpuinfo
  • pImplイディオム - ゲームプログラミングWiki

    概要 † データを保持するオブジェクトを指し示すポインタをもつデザインのことをしばしば「pImplイディオム」といいます。 「pImpl」とは"pointer to Implementation"の略称です。 ↑ なぜ「pImplイディオム」を使うのか † 例としてTpodクラスについて考えます。 Tpod.h #include "Tea.h" // 注目 class Tpod { private:~ Tea m_tea; public: Tea GetTea(); }; Tpod.cpp #include "Tpod.h" Tea Tpod::GetTea() { return m_tea(); } 普通はこのように宣言と定義を書くが、この時Teaクラスを使うために Tea.hをインクルードしています。 もしもTea.hが変更されたらどうなるでしょうか? Tpod.hはT

  • オレオレ switch case つくったよー - C++でゲームプログラミング

    つくりはじめてからだいぶ時間が経ってしまったんですが、ぐだぐだになってきたので、暫定版って事で。 #include <iostream> #include <string> #include <boost/lexical_cast.hpp> #include <boost/lambda/lambda.hpp> #include "switch_case.hpp" namespace sc = switch_case; std::string check(int n){ return sc::switch_(n%2==0) |=sc::case_(true , sc::var(std::string("偶数"))) |=sc::case_(false, sc::var(std::string("奇数"))); } void fizz_buzz(int n){ using boost::lam

    オレオレ switch case つくったよー - C++でゲームプログラミング
  • ラムダオブジェクトを static 変数で保持する時の注意 - C++でゲームプログラミング

    Lingr の C++ 部屋で話題になったのですが、参照キャプチャしたラムダを static 変数で保持するのは未定義の動作になることがあるので注意しましょうという話。 さて、話題になっていたのは次のようなコードです。 void func(int const& i){ static auto f = [&]{ std::cout << i << std::endl; }; f(); } func(1); // => 1 func(2); // => 1 呼び出した f() は両方共 1 が出力されます。 ここで引数を int に変えてみるとどうでしょう。 // 引数を int に変更 void func(int i){ static auto f = [&]{ std::cout << i << std::endl; }; f(); } // 最初のコードと結果が違う func(1); /

    ラムダオブジェクトを static 変数で保持する時の注意 - C++でゲームプログラミング
  • 委譲コンストラクタ [N1986] - cpprefjp C++日本語リファレンス

    このページはC++11に採用された言語機能の変更を解説しています。 のちのC++規格でさらに変更される場合があるため関連項目を参照してください。 概要 「委譲コンストラクタ (delegating constructors)」は、コンストラクタから、同じクラスの他のコンストラクタに処理を委譲する機能である。 class X { int i_; public: X(int i) : i_(i) {} // (1) : int型のパラメータを受け取るコンストラクタ X() : X(42) {} // (2) : デフォルトコンストラクタ。 // (1)のコンストラクタに初期値を渡して初期化処理を委譲する }; (2)のコンストラクタでの、X(42)の部分が委譲コンストラクタに当たる。(2)のコンストラクタから(1)のコンストラクタを呼び出し、初期化処理を(1)のコンストラクタに集約している。

  • GitHub - rbock/sqlpp11: A type safe SQL template library for C++

    SQL and C++ are both strongly typed languages. Still, most C/C++ interfaces to SQL are based on constructing queries as strings and on interpreting arrays or maps of strings as results. sqlpp11 is a templated library representing an embedded domain specific language (EDSL) that allows you to define types representing tables and columns, construct type safe queries checked at compile time for synta

    GitHub - rbock/sqlpp11: A type safe SQL template library for C++
  • C++ iterator 入門

    C++ iterator(イテレータ) とは iterator(イテレータ)とは抽象化されたポインタのことで、コンテナ の要素を指し、移動、要素を参照・変更することが出来る。 iterator(イテレータ)は日語では「反復子」と訳されるが、最近では「イテレータ」と呼ぶことが多いと思う。 もともとは、外部ライブラリであった STL(Standard Template Library) で導入されたものだが、現在では C++ の標準に取り込まれている。 コンテナクラスとSTLアルゴリズムを結びつける結合器的な役割を持つ STLアルゴリズムも現在は標準アルゴリズムとしてC++に取り込まれている イテレータを引数にとる、便利なアルゴリズムが多数用意されている 標準アルゴリズムを使用せず、イテレータ経由でコンテナを操作し、なんらかの処理を行うことも可能 これは、自分でアルゴリズムを書いていることに

  • Fixstars Tech Blog /proc/cpuinfo

    このブログは、高速化のエキスパートであるフィックスターズのエンジニアたちが、技術的な知見や検証結果を自由に発信しているテックブログです。「ソフトウェアの高速化・最適化」と「最新ハードウェア/AI技術の活用」に焦点を当てた、専門性の高い記事が中心です。

    Fixstars Tech Blog /proc/cpuinfo
  • constのあれこれ

    ホーム < ゲームつくろー! < C++踏み込み編 < constのあれこれ その2 constのあれこれ ① 一般変数に対する振る舞い 「const」は「キーワード」という部類の1つだそうで、変数のアクセスに対して付加的な機能を提供してくれます。基的な使い方は次のようです。

  • 1