タグ

C++に関するKinjouJのブックマーク (32)

  • 『Effective Modern C++』勉強会まとめ - Cybozu Inside Out | サイボウズエンジニアのブログ

    サイボウズ・ラボの光成です。 今年の1月から『Effective Modern C++』(Scott Meyers)の読書会を社外の人を含めて月1回のペースで始め、先月末に無事最後まで終わりました。 その感想をざっと紹介いたします。 『Effective Modern C++』(以下EMCと略)はC++11/C++14で追加された様々な新しい機能について紹介するです。 従って、C++の全くの初心者が読むには少々難しいと思います。以前のC++にある程度習熟した人が、新機能の注意点を勉強したいというときに使うとよいでしょう。 には重要な間違いもいくつか指摘されていますので正誤表の確認はしておきましょう。 なおこの9月には日語版(千住治郎訳)も登場しています。こちらは7月時点で原書に見つかっている正誤表が反映されていてうれしいですね。 C++11ではautoの型推論、typedefより高機

    『Effective Modern C++』勉強会まとめ - Cybozu Inside Out | サイボウズエンジニアのブログ
    KinjouJ
    KinjouJ 2015/10/16
  • OpenCVで画像サイズを変更する方法2つ | ITハット

    OpenCVで画像サイズを変更する方法2つ 直接比率を指定する方法 #include <iostream> #include <opencv2/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> int main(int argc, const char* argv[]) { // 入力画像 cv::Mat src = cv::imread("src.jpg", 1); if(src.empty()) std::cout << "not found" << std::endl; // 出力画像 cv::Mat dst; // 画像リサイズ cv::resize(src, dst, cv::Size(), 0.4, 0.4); cv::namedWindow("RESIZE", cv::WINDOW_AUTOSIZE); cv::imsho

    OpenCVで画像サイズを変更する方法2つ | ITハット
  • C++14の言語拡張まとめ - Faith and Brave - C++で遊ぼう

    C++14は、C++11に対するマイナーアップデートです。仕様のバグ修正や、C++11の比較的小さめな機能不足を補うバージョンになっています。 細かすぎる変更はさすがに書きませんが、ある程度大きめの変更を以下にまとめます。 この内容は、正式に策定されるまでに変更される可能性があります。 コア言語 2進数リテラル 変数テンプレート 通常の関数の戻り値型を推論 ジェネリックラムダ 一般化されたラムダキャプチャ constexpr関数の制限緩和 どこからともなく現れる結果の規定(前半, 後半) [[deprecated]]属性 数値リテラルの桁区切り文字 サイズ付きのデアロケーション initializer-listによるaggregate初期化の制約緩和 ロックフリーの定義 シグナルハンドラでできることの制限緩和と明確化 ライブラリ make_unique() コンパイル時整数シーケンス tu

    C++14の言語拡張まとめ - Faith and Brave - C++で遊ぼう
    KinjouJ
    KinjouJ 2015/01/14
  • C++ のソースに twenty one と書いたら 21 になるようにする - Qiita

    が面白かったので書いてみた。 目的は、 one や twenty one をソースコードに直接書けるようにすること。 twenty one / three を 21/3 と解釈すること。 辺り。 念の為に書いておくと、何の役にも立たない。 version 1 -- operator() #include <iostream> struct numbase { int m; numbase( int m_ ): m(m_){} int value() const { return m; } virtual ~numbase(){} }; struct num : public numbase { num( int m_ ): numbase(m_){} }; struct ten : public numbase { ten( int m_ ): numbase(m_){} num oper

    C++ のソースに twenty one と書いたら 21 になるようにする - Qiita
    KinjouJ
    KinjouJ 2014/08/25
  • C++11: Syntax and Feature

    C++11の文法と機能(C++11: Syntax and Feature) Copyright (C) 2013 江添亮. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GN

    KinjouJ
    KinjouJ 2013/10/27
  • 「 Copy して Swap 」 対 「 Copy して Move 代入」 - 野良C++erの雑記帳

    例外安全なコピー代入演算子を定義しようとしたとき, C++11 では Copy して Swap する方法 Copy して Move 代入する方法 の二通りが存在するので,それぞれのメリットとデメリットを比べてみた. Copy して Swap 昨日の記事で説明した方法. struct Hoge { std::vector<int> x, y; Hoge() = default; Hoge(std::vector<int> x_, std::vector<int> y_) : x(std::move(x_)), y(std::move(y_)) {} Hoge(Hoge const&) = default; Hoge(Hoge &&) = default; Hoge& operator=(Hoge rhs /*pass by val*/) noexcept { this->swap(rhs);

    「 Copy して Swap 」 対 「 Copy して Move 代入」 - 野良C++erの雑記帳
    KinjouJ
    KinjouJ 2013/06/22
  • メモリリークとは何か - kuenishi's blog

    メモリリークに悩まされている技術者は多いだろう。メモリリークが嫌でGCという技術が開発されたといっても過言ではないし、歴史的にはC++からJavaへシフトが起きた大きな理由のひとつといっていい。Unix系の簡単な定義でいえば、ヒープ領域を指すポインタ(アドレス)をロストしてしまえばそのメモリはもう漏れたといってよい。たとえばこういったコードだ。 struct { int i; char c; } spam; int main(){ void* p; int i; for(i=0; i<1024; ++i){ p = malloc(sizeof(struct spam)); } pause(); } このコードではpause(3)の時点で約5KBのメモリが漏れている。free(3)を使えばメモリをOSに返却できるが、アドレスが分からないので返却できない。 ところが、ここでいいたいのは、メモリ

    メモリリークとは何か - kuenishi's blog
    KinjouJ
    KinjouJ 2013/04/23
  • 文字列カーネルで遊ぶ - Negative/Positive Thinking

    はじめに ちょっと、高次元特徴空間での2つの文字列の像の内積である文字列カーネルで遊んでみる。 文字列カーネルを類似度として使いたい。遊びなので、数式はちゃんと追ってない、、、 文字列カーネル 文字列に対するカーネル カーネルKは、入力空間Xから特徴空間Fへの写像φについて、x,y∈Xに対してK(x,y)=<φ(x),φ(y)>を満たす関数のこと 2つの文字列の距離的なものを考えるのに、共通する部分列や部分文字列を考えたもの いろんな考え方ができるので、いろんなものが存在する 部分列と部分文字列の違い 部分列(Subsequence) 記号列に対して、「並び」だけを保持した部分的な記号列 「abcde」に対して、「abd」や「be」や「bcde」など 長さがkの部分列は「k-merの部分列」という 部分文字列(Substring) 記号列に対して、「隣接性」と「並び」を保持した部分的な記号

    文字列カーネルで遊ぶ - Negative/Positive Thinking
    KinjouJ
    KinjouJ 2013/04/07
  • Ten C++11 Features Every C++ Developer Should Use

    This article discusses a series of features new to C++11 that all developers should learn and use. Introduction This article discusses a series of features new to C++11 that all developers should learn and use. There are lots of new additions to the language and the standard library, and this article barely scratches the surface. However, I believe some of these new features should become routine

    KinjouJ
    KinjouJ 2013/04/03
  • std::stringstream再考 « Stop Making Sense

    August 2011 (1) July 2011 (1) June 2011 (2) April 2011 (2) March 2011 (2) February 2011 (2) January 2011 (6) December 2010 (6) November 2010 (5) October 2010 (8) September 2010 (2) August 2010 (3) July 2010 (9) June 2010 (4) March 2010 (1) February 2010 (7) January 2010 (2) std::stringstreamとは C++の標準ライブラリ(STL)で定義されている文字列ストリームで、色々な型を文字列化する際に重宝するクラスです。 JavaのStringBufferクラスに似ています。 まず、簡単な使い方から見てみましょう

    KinjouJ
    KinjouJ 2013/03/12
  • ウェーブレット木を試す - Negative/Positive Thinking

    はじめに 巨大な文字列でも高速にクエリ処理できる噂の木を、挙動を確認するため作ってみた。 コード アルファベット(a〜z)の文字列を扱う場合 完備辞書の操作が愚直、ビット列がvector を参考にしたけど、2か所間違ってる? #include <iostream> #include <vector> #include <queue> #include <cmath> //top_kのためのタプル struct ST { int t; size_t st, en; ST(int t, size_t st, size_t en):t(t),st(st),en(en){} }; bool operator<(const ST& a, const ST& b){ return (a.en-a.st) < (b.en-b.st); } //アルファベット([a-z]+)用のウェーブレット木 cla

    ウェーブレット木を試す - Negative/Positive Thinking
  • C++11

    C++11 Alex Sinyakov Software Engineer at AMC Bridge LLC Twitter: @innochenti E-mail: innochenti@gmail.com PDF version: http://j.mp/cpp11ref null pointer constant C++03 void foo(char*); void foo(int); foo(NULL); null pointer constant C++03 C++11 void foo(char*); void foo(int); foo(NULL); //calls second foo void foo(char*); void foo(int); foo(nullptr); //calls first foo standard types C++03 sizeof(

    KinjouJ
    KinjouJ 2013/01/08
  • Google Test ユーザーが Boost.Test を使ってみた

    この記事は、C++ Advent Calendar 2012: 17日目の記事になります。 お題は「Google Test ユーザーが Boost.Test を使ってみた」です。 (2012/12/27: 補足記事を書きました。) これまで、C++ の testing framework には Google Test を使ってきたのですが、 この機会に Boost.Test に挑戦したいと思います。 今年2月に行われた「Boost.勉強会 #8 大阪」の参加報告で Boost.Test 使うぜ!っと意気込んでおいて今更かという感じではありますが・・・ では、なぜ今まで使わなかったのかというと boost の導入がめんどくさそう 日語情報が少ない Google Test が使いやすかった と、いう勝手なイメージがあったからです。最後のが一番大きな理由でした。 でも、他のフレームワークのこと

    Google Test ユーザーが Boost.Test を使ってみた
  • p-Stable LSHをC++11でさっくり実装 - nyanp::blog

    高次元の特徴量を持ったベクトルの集合に対して,与えられたクエリベクトルに似ているものを探し出すという問題を,近傍探索とかいう.旧来のkd-treeあたりを使った探索ではなく,近似的に近いベクトルを探す近似近傍探索が流行っている(らしい).近似近傍探索のひとつ,LSHの説明を読んでたら「これ案外簡単に実装できるんじゃね?」と思い至ったので,C++11で書いてみた. LSHについては以下の説明がとても分かりやすい. 060108 Locality-Sensitive Hashingの実装が一段落 - 飛行船通信 - Seesaa Wiki(ウィキ) 他には以下を実装の参考にした. lsh p-stable 最近のバイナリハッシングをいくつかJavaで実装してみた - るびゅ備忘録 Locality Sensitive Hashing - (setf yaruki nil) - nlpyutor

    p-Stable LSHをC++11でさっくり実装 - nyanp::blog
  • 出力するたびにフラッシュする - Faith and Brave - C++で遊ぼう

    C++標準のIOStreamには、std::unitbufフラグというのがあります。これを出力ストリームに設定することで、繰り返し出力を行う処理で、出力するたびにフラッシュが行われるようになります。 #include <fstream> int main() { std::ofstream file("a.txt"); file << std::unitbuf; for (int i = 0; i < 10; ++i) { file << i; // 出力するたびにフラッシュされる } } これは、以下のコードと同じ意味になります: #include <fstream> int main() { std::ofstream file("a.txt"); for (int i = 0; i < 10; ++i) { file << i; file.flush(); // 自分でフラッシュする

    出力するたびにフラッシュする - Faith and Brave - C++で遊ぼう
    KinjouJ
    KinjouJ 2012/11/18
  • Node.js でマルチスレッド対応のネイティブモジュールを作成する - 凹みTips

    はじめに 前回(Node.js で C++ アドオンから EventEmitter のイベントリスナを呼ぶ - 凹みTips)、C++ のネイティブモジュールから EventEmitter を利用して JavaScript 側で定義したイベントリスナを呼ぶ方法を紹介しました。ただ Node.js はシングルスレッドベースの非同期処理を行っているため、このイベントリスナを呼ぶ過程のどこかで重い処理を行うと、全体の処理がブロックされてしまいます。また、これを避けるために、子スレッドを作成して処理が終了したら JavaScript のイベントリスナを呼ぶ、としようとしても、別スレッド内から Node.js の走るスレッドの v8 の世界へ直接アクセスすることが出来ないため、イベントリスナを呼ぶことができません*1。 そこで、libeio / libev に代わって Node.js のコアとして置

    Node.js でマルチスレッド対応のネイティブモジュールを作成する - 凹みTips
  • Open Data Structures

    Open Data Structures covers the implementation and analysis of data structures for sequences (lists), queues, priority queues, unordered dictionaries, ordered dictionaries, and graphs. Data structures presented in the book include stacks, queues, deques, and lists implemented as arrays and linked-lists; space-efficient implementations of lists; skip lists; hash tables and hash codes; binary search

  • Native Client

    KinjouJ
    KinjouJ 2012/10/22
  • C++11 async tutorial | Solarian Programmer

    C++11 async tutorial Posted on October 17, 2012 by Paul For a few years now, we live in a multiprocessor world, starting from the phone in my pocket to the parallel quad-core beast I have on my table. Today, you could easily buy a six or twelve core machine that is several orders of magnitude more powerful than the super computers from a decade ago. As programmers, we need to be able to use at ful

    C++11 async tutorial | Solarian Programmer
    KinjouJ
    KinjouJ 2012/10/20
  • C++11 - Wikipedia

    この記事は更新が必要とされています。 この記事には古い情報が掲載されています。編集の際に新しい情報を記事に反映させてください。反映後、このタグは除去してください。(2019年1月) C++11は、プログラミング言語 C++ のISO標準 ISO/IEC 14882:2011 の略称である。規格の策定中は2009年中の標準化を目指していたため、C++0x という仮称で呼ばれていた。 ISO/IEC 14882:2003 (C++03) に代わるものとして、2011年8月12日にISOによって承認された[4]。後継のC++14が2014年8月18日に承認されている。 コア言語への機能追加や標準C++ライブラリの拡張を施し、C++TR1ライブラリの大部分を(数学的特殊関数ライブラリを除いて)取り込んでいる。 C++ への修正はコア言語と標準ライブラリの双方に及ぶ。 委員会は、新規格の個別の要素の

    KinjouJ
    KinjouJ 2012/08/25