This domain may be for sale!
この記事はCompetitive Programming Advent Calendar Div2012の2日目の記事です。 12月20日追記: Darseinさんが20日目の記事で、ビット演算についての詳しい説明を紹介してくださっています!必読ですね!!!!:) はじめに Y^´ ∨// /,∠ ,. ' /l/// /, ' , '/ ! | l }´ 〈 〉 変 〈/ , ' // ̄`>< /// /// _,.=‐|'"´l l〈 変 / 〈 態. ∨, '/l| ,.'-‐、`//`7/ /''"´__ | ハ l丿 態 { 人) ! ! (/! |ヽ〈_ ・.ノ〃 〃 / '/⌒ヾ.! ,' !く ! ! (_ ト、__/ ヽ、_,.イ /l l |:::::::```/:::::/...´..
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
AOK's C Source Library 「LSI C-86 Ver.3.30c 試食版」、「Borland C++ 5.5」でコンパイル出来ます。 /* * k2l.c : 漢数字で表記された文字列から数値型を得る * * Copyright (c) 2002, 2005 AOK. * * 2002.03.14 - 初版 * 2002.07.25 - 2版 * 2005.11.12 - 3版 * * #もっと目が醒めるほどに短くしたいな〜 * */ #include <stdio.h> #include <string.h> #define BUFLEN 127 /* 漢数字の配列 */ struct { char *moji; /* 漢字 */ char value; /* 上位バイト:種別/下位バイト:値 */ } kanji[] = { {"〇", 0x00}, {"一",
文字列を処理するのに Python はとても便利ですが,速度が気になる状況では,やはり C/C++ を使いたいところです.ということで,Unicode 正規化(http://homepage1.nifty.com/nomenclator/unicode/normalization.htm)のために ICU(ICU - International Components for Unicode)を試してみました. インストール Synaptic パッケージ・マネージャから libicu-dev をインストールできました. Unicode 正規化のテスト // g++ には `icu-config --cppflags --ldflags` を渡します. #include <unicode/normlzr.h> #include <iostream> int main() { // utf-8
米Facebookは6月3日、C++ライブラリ「Folly(Facebook Open Source Library)」を公開した。同社のサービスで実際に利用されているライブラリで、同社のC++コードをオープンソース化する試みの1つとなる。 FacebookはすでにHipHopやThriftといった技術をオープンソース化しており、また今後も内部で使用している技術のオープンソース化を進めていく方針だが、C++のコードについてはその多くがFacebook社内で利用している非公開のライブラリを利用しているため、そのままでは公開できないという問題があったとのこと。これを解決するため、まずはこのライブラリをオープンソースとして公開することにしたという。 Follyではメモリ管理やベンチマークツール、ビット演算、データやエンディアン変換、文字列操作、JSONデータの操作、キューやベクタ、ハッシュマップ
今まで自分が見つけたコンピュータビジョンの研究に役に立ちそうなフリーのライブラリやソースコードをまとめてみました。自分ではまだ使っていないものも多いので、そこはご容赦を。主にC/C++が中心です。 またライブラリ形式でない、いわゆる学会で発表した研究のコードをそのまま公開しているという人がたくさんいて、それに関しては特にメジャーなもののみ紹介しています。なにぶん僕の観測範囲は限られてますので、「このライブラリに触れないのはおかしい」、「説明が間違っている」等、ご意見大歓迎です。 定番(Standard) OpenCV 定番中の定番です。コンピュータビジョンに関して広範なアルゴリズムが実装されています。 http://code.opencv.org/projects/OpenCV/wiki/WikiStart Point Cloud Library 3次元点群データを扱うならこれ。Kinec
OpenGrm NGram Library Version 1.3.15 is now available for download. NGram is now available on conda-forge. This allows Linux (x86) and Mac OS X users who already have conda to install the library and all dependencies using the following command: conda install -c conda-forge ngram. The OpenGrm NGram library is used for making and modifying n-gram language models encoded as weighted finite-state tra
標準C++ライブラリの std::valarray は、浮動小数点数型で NaN を含んでいると、メンバ関数 max(), min(), sum() の値が NaN になったりする。これは無論 valarray に限ったことではなく、std::vector だろうと配列だろうと、標準テンプレートライブラリ関数 std::max_element, std::min_element, std::accumulate を使えば同じく NaN になる。なお、C++の規格では NaN は必須ではないのでこの挙動は実装依存だが。しかし、NaN ではない要素の最大値、最小値、総和くらい取りたいではないか! 実は valarray ではそれが簡単にできる。 // NaN 以外の総和。ここで v は std::valarray<double> 型。 std::valarray<double>(v[v ==
C++を使って作成した共有ライブラリをJavaから簡単に利用する方法を紹介します。JNI(Java Native Interface)を使うよりはるかに簡単です。 用意するものは、jnaerator: http://code.google.com/p/jnaerator/ です。 jnaeratorは、JNA(Java Native Access): https://jna.dev.java.net/を利用して簡単に共有ライブラリへのアクセスを実現しています。 C言語についてのJavaから共有ライブラリへのアクセスの情報はいろいろとあったのですが、C++を使った共有ライブラリの情報が少なかったので、この記事を書きました。 C++のソースを作成. ここは定番のHelloWorldでしょうか。 $ vi HelloWorld.h #ifndef _HELLO_WORLD_H_ #define
Valgrind for Mac OS X. Some assembly required. Valgrind is a powerful open-source memory debugger. This is a port of Valgrind for Mac OS X. http://valgrind.org/ http://www.apple.com/macosx/ Caveat programmer This port is UNSUPPORTED and INCOMPLETE and BUGGY. It may not find bugs in your program, or run your program correctly, or run your program at all. Requirements Mac OS X 10.5 Leopard. An Intel
KenLM estimates, filters, and queries language models. Estimation is fast and scalable due to streaming algorithms explained in the paper Scalable Modified Kneser-Ney Language Model Estimation Kenneth Heafield, Ivan Pouzyrevsky, Jonathan H. Clark, and Philipp Koehn. ACL, Sofia, Bulgaria, 4—9 August, 2013. [Paper] [Slides] [BibTeX] Querying is fast and low-memory, as shown in the paper KenLM: Faste
数値計算ではしばしば複素数を必要とすることがあります。たとえば波動を複素数表示にすると、振幅と位相に分けて考えることができ、また演算も非常に簡単になります。C言語ではC99と呼ばれる規格でようやく複素数型が定義されました。C++ではStandard Template Library (STL)と呼ばれる標準ライブラリに、複素数を扱うためのテンプレート・クラスが定義されています。 C++で複素数を扱うにはまずヘッダファイルをインクルードする必要があります。 #include <complex> 実部及び虚部がdouble型の複素数を使うには次のように宣言します。 std::complex< double > c; これで複素数cを扱えるようになりました。上の文でdoubleをintにすれば、実部と虚部がint型の複素数を定義できます。"+","-","*","/"といった演算
UTF-8とUCS-4の相互変換をC/C++で書いた時のメモ。たぶんまた自分で読むので。 背景 文字のちょっとした正規化などの処理をしたいがiconvやICUなどの巨大なライブラリは使いたくないということがたまにある。嚴密な文字列処理をしたい場合にはそれらのライブラリを使った方が安全だし確実であることは言うまでもないが、ちょっとしたユーティリティを作るのにはちょっとオーバースペックである。 一方で、UTF-8文字列に対してはASCII用正規表現ライブラリを使えば検索や置換などの大抵の操作ができるので、自分でゴリゴリと変換処理を書かなければいけないことはあんまりない。 ただ、たまに自分で書きたくなることもある。ヨーロッパ系言語のアクセント記号を外したり、半角片仮名を全角片仮名にしたり、漢字の異体字表記を常用漢字に統一したりといった処理を一気にやりたい場合とか。そんな場合、各文字が可変長バイト
ACM/ICPC(プログラミングコンテスト)系列の問題を解くことを目標にして,各種アルゴリズムを C++ で実装してみた.極めて意地が悪い類の問題には対応していないし,特定の入力に対して高速に動くということもない.計算量も最良とは限らない. これらを参考にする方への注意とお願い: これらの記述は正確とは限りません.参考文献を参照することを強く推奨します.間違っている場合は是非教えてください. これらのプログラムは間違っているかもしれません.各人で検証することを強く推奨します.バグがあれば是非教えてください. 分類が怪しいので,これはこっちだろう,ということがあればコメントを下さると助かります. 注意! 現在書き換え中 TODO 分類を正しく行う. 全体的に説明と使い方を詳しく. Verify していないものを Verify. ボロノイ図(いつになることやら……) 基本 テンプレート グラフ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く