タグ

関連タグで絞り込む (2)

タグの絞り込みを解除

c++に関するkzfmのブックマーク (17)

  • Boyer-Moore String Search Algorithm with C++ - yasuhisa's blog

    The Boyer-Moore string search algorithm is one of the efficient string searching algorithm. This is based on a naive string searching algorithm which slides a pattern forward by 1 position and verifies whether a substring of text matches the pattern. A characteristic of this algorithm is its behavior when verifying. This verifies whether a match exists at particular position 'backward'. Let us con

    Boyer-Moore String Search Algorithm with C++ - yasuhisa's blog
    kzfm
    kzfm 2009/12/15
  • Knuth-Morris-Pratt algorithm with C++ - yasuhisa's blog

    #include <iostream> #include <string> #include <map> // ref http://infoshako.sk.tsukuba.ac.jp/~yamamoto/Courses/files/page2_13.pdf class KnuthMorrisPatt { public: std::string text; std::string pattern; int n; int m; std::map<int, int> pi; // prefix function KnuthMorrisPatt(std::string text_, std::string pattern_) : text(text_), pattern(pattern_), n(text_.size()), m(pattern_.size()){ compute_prefix

    Knuth-Morris-Pratt algorithm with C++ - yasuhisa's blog
    kzfm
    kzfm 2009/12/15
  • オープンソース化された並列化テンプレートクラスライブラリ「Intel Threading Building Blocks」入門 | OSDN Magazine

    C++で並列アプリケーションを実装するためのテンプレートライブラリとして、インテルがリリースしている「Intel Threading Building Blocks」(TBB)がある。TBBはインテル コンパイラーやインテル Parallel Studioといったインテルのコンパイラ製品に付属しているほか、オープンソース版も公開されている。記事ではこのTBBの概要と、基的な使い方を解説する。 C/C++で並列アプリケーションを実装する手法として、並列化したい処理をOSのAPIを用いてマルチスレッド化する、もしくは並列プログラミングの規格である「OpenMP」を利用する、といったものが知られている。これらについては以前の記事でも紹介しているが、マルチスレッドを利用した実装は柔軟性がある一方で手間が掛かり、OpenMPは比較的手軽だが柔軟性に欠けるなど、それぞれに長所と短所がある。 また、

    オープンソース化された並列化テンプレートクラスライブラリ「Intel Threading Building Blocks」入門 | OSDN Magazine
    kzfm
    kzfm 2009/09/17
  • C++: インテル スレッディング・ビルディング・ブロックを使って簡単に並列化

    最近はマルチコアCPUが当たり前になってきて、それを使って簡単に並列処理プログラミングができないか、頭を悩ませていたのだが、インテルのスレッディング・ビルディング・ブロック(Threading Building Blocks, TBB)が非常に良くできた技術であることを知った。 これまではMPIやら、OpenMPやら、CUDAやらをちょろちょろ手を出しつつも、どれも正直面倒だった。趣味のプログラミングではそれでも楽しいからいいのだけど、単にある処理を並列化で高速にしたいだけの場合、並列処理に関わる面倒な手続きなどは極力省きたい。また、どうしても泥臭いやり方になることが多い。例えば、Cでは簡単に書けるのだけど、C++の機能を使った処理がやりづらかったりね。 そこで、TBBが登場する。マルチコアやメニーコアプラットフォーム上での利用となるが、最近では一般のノートPCでさえマルチコアCPUが使わ

    C++: インテル スレッディング・ビルディング・ブロックを使って簡単に並列化
    kzfm
    kzfm 2009/06/23
  • TopCoder Feature Articles

    kzfm
    kzfm 2008/09/05
  • The Articles - Elegant C++ std::stringの大文字/小文字変換

    Problem どのようにすれば、std::stringの大文字/小文字変換を行えますか? Solution std::transform()とstd::toupper()/std::tolower()を用いて簡単に書けます。 std::string str("hello, world"); std::transform(str.begin(), str.end(), str.begin(), std::toupper); 以上…ちょっと待ってください! 通常は上記の書き方で問題ありませんが、これがコンパイルエラーとなる場合があります。 例えばGCC 4.1.1で<locale>や<iomanip>をインクルードしている場合、以下のようなコンパイルエラーが発生します。 g++ -c -pipe -Wall -W -Werror -g -o main.o main.cpp ma

    kzfm
    kzfm 2008/09/04
  • SRM162-DIV2-250

    最小と最大の数を与えられた時にそのレンジの数の最小公倍数を求める。 順繰りにかけていって、その際に最大公約数で割ってく。最大公約数はユークリッドの互除法で。 def lcm(first,last): l =1 for i in range(first,last): l = l * i / gcd(l,i) return l def gcd(a,b): if(b==0): return a return gcd(b, a % b) print lcm(1,5) print lcm(4,5) print lcm(1,12) 実行 /usr/bin/python /Users/kzfm/python/lcmr.py 12 4 27720

    SRM162-DIV2-250
    kzfm
    kzfm 2008/08/21
  • 数奇な因子 » Blog Archive » stringstream を再利用するには

    C++ の STL の話。文字列を string に入れて istringstream のコンストラクタに文字列を与えると、そのインスタンスを標準入出力からの入力のようにストリームとして扱えます(というか元からそれが目的か)。 string buf; getline(cin, buf); istringstream iss(buf); while( !iss.eof() ){ string s; iss >> s; cout << s << endl; } 一行に複数の入力があるときはこれがとても便利。でも今までは、上の変数 iss は上のように使用したらそれっきり再利用できず、別の文字列を同様にストリームにしたいときは新しく istringstream 型の変数を用意してました。同じ変数に新しい文字列を与えてまた同じ変数を使いたいと常々思ってたんですが、どうやればいいのかさっぱり分からな

    kzfm
    kzfm 2008/07/04
  • tclap -- Templatized C++ Command Line Parser Library (v1.4)

    Links Branch 1.4 Windows Linux Mac TCLAP is a small, flexible library that provides a simple interface for defining and accessing command line arguments. It was initially inspired by the user friendly CLAP library. The difference is that this library is templatized, so the argument class is type independent. Type independence avoids identical-except-for-type objects, such as IntArg, FloatArg, and

    kzfm
    kzfm 2008/07/02
  • C++ Style Guide

    Benjy Weinberger Craig Silverstein Gregory Eitzmann Mark Mentovai Tashana Landray This style guide contains many details that are initially hidden from view. They are marked by the triangle icon, which you see here on your left. Click it now. You should see "Hooray" appear below. Hooray! Now you know you can expand points to get more details. Alternatively, there's an "expand all" at the top o

    kzfm
    kzfm 2008/06/29
  • 【C++】split関数を作って文字列を分割してみよう。【STL】

    ←フエルチラシノウラ。トップページへもどる。 【C++】split関数を作って文字列を分割してみよう。【STL】 C++ STL 標準ライブラリ split 文字列分割 PerlとかJavaには当然のようにあるsplit関数C++の標準ライブラリにはないようなので自分で作る必要があります。 以下はそのサンプルです。 結酷K当に作ったのでバグとかあってもしりませんよ(笑 サンプル。 #include <string> #include <list> #include <iostream> using namespace std; /** * split関数 * @param string str 分割したい文字列 * @param string delim デリミタ * @return list<string> 分割された文字列 */ list<string> split(string st

    kzfm
    kzfm 2008/05/29
  • C++ string型の文字列を大文字から小文字へ、小文字から大文字へ変換する

    このドキュメントの内容は、以下の通りです。 はじめに string型の大文字や小文字を変換する方法 char型の文字列の大文字や小文字の変換する方法 string型の大文字と小文字の変換のサンプルコード コンパイル 大文字に変換したデータを他のstring型の変数に格納する C++でcharの配列の大文字を小文字に変換する場合 C++でcharの配列の小文字を大文字に変換する場合 C言語で大文字を小文字、小文字を大文字に変換する方法 C++関連記事 はじめに アルファベットには、大文字と小文字が存在します。ソフトウェアで文字列を比較するときに、大文字・小文字を違うものとして扱うか、大文字・小文字を区別せずに比較するなど、いろいろなケースがあります。大文字・小文字を区別せずに比較する場合には、大文字を小文字に変換して、文字をそろえたり、逆に、小文字を大文字に変換してそろえた上で、比較すること

    kzfm
    kzfm 2008/05/28
  • 降順のソート - Faith and Brave - C++で遊ぼう

    どこかで読んだ気がするのですが こうするより #include <algorithm> #include <functional> std::sort(v.begin(), v.end(), std::greater<Type>()); こうした方がいいんじゃないかと #include <algorithm> std::sort(v.rbegin(), v.rend()); 最近は後者を好んで使用しています

    降順のソート - Faith and Brave - C++で遊ぼう
    kzfm
    kzfm 2008/05/27
    rbegin
  • C++編(標準ライブラリ) 第1章 string

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

    kzfm
    kzfm 2008/05/13
  • C++文字列 - C++のstring型について調べるも… (凍結)

    文字列にはC言語の文字列charと、C++で定義されているstringクラスがある。 char型文字列は配列と同じ性質を持つ。文字定数のラベルは文字列のアドレスとなり、関数の引数にはポインタを使用する。 例: #include <stdio.h> #include <string.h> out(char *p){ printf("%s\n",p); } main(){ char *a="JSA"; out(a); } stringクラスを使用する場合は #include <string> を指定する。ラベルはオブジェクトであるからchar型のようにポインタに注意する必要がない。 例1: /* cc -lstdc++ b.cpp */ #include <iostream> #include <string> out(string p){ cout << p << endl; } main(

    kzfm
    kzfm 2008/05/13
  • TopCoderやってみた - suztomoのはてなダイアリー

    topcoderのSingleRoundMatch(SRM)という週1回、1.5時間ぐらいの小さなプログラミングコンテストに参加してみました。得点が違う3題が出され、それらにそった関数を作ることで時間に応じた得点(rating)がもらえます。賞金はあるらしいですが、多分かなり上位じゃないと無理っぽいです。 頭の体操のために参加してみたなーと1月ぐらいから思っていました。でもC++やったことなかったので、躊躇していて、この前のg86合宿でC++をざーっと読んだので参戦してみました。気づいた事をメモ。 コンテストで使える言語はC++, Java, C#, VBだけど、C++を使う人が圧倒的に多い。今回の部屋では20人中Javaが1,2人しかいなくて、あとはみんなC++だった。 C++はCだと思って書いてもなんとなく書ける。 開催時間が固定されていない。例えば今回は日時間の火曜夜20時だった

    TopCoderやってみた - suztomoのはてなダイアリー
    kzfm
    kzfm 2008/04/22
  • 負けず嫌い - 西尾泰和のはてなダイアリー

    負けず嫌いなので86世代のid:suztomoがTopCoderをやっているのを見て自分もやりたくなりましたとさ。 http://d.hatena.ne.jp/suztomo/searchdiary?word=topcoder http://d.hatena.ne.jp/y_yanbe/20080106/1199566667 登録の所にあったPurchasing Roleがいまいちよくわからない。適当に入れて登録した。 http://www.topcoder.com/tc?module=Static&d1=dev&d2=support&d3=devGettingStarted これを読めばいいらしい。違う、それはcomponent competitionsで僕がやりたかったのはalgorithm competitions (held weekly)だ、たぶん。 http://www.top

    負けず嫌い - 西尾泰和のはてなダイアリー
    kzfm
    kzfm 2008/04/22
  • 1