algorithmとC++に関するdotsargのブックマーク (11)

  • strlen() の深淵 - Qiita

    あらまし strlen() という関数がある。御存知の通り、文字列の長さを算出する標準 C ライブラリの関数だ。 やってることは単純で、例えば以下のように実装できる。 size_t strlen_simple(const char* str) { const char* p = str; while (*p) ++p; return size_t(p - str); } '\0' が見つかるまでポインタを進め、初期位置との差分を返すだけだ。これで機能的には std::strlen() と同等である。 では、速度的にはどうだろう?適当にベンチマークを書いて MSVC 2022 でコンパイル&実行するとこうなった。

    strlen() の深淵 - Qiita
    dotsarg
    dotsarg 2024/04/02
    8 byte のデータ型の中に 0 の byte が含まれるかどうかを Bit 演算で求める方法が記載されている。
  • イージング関数を使いたい@C++ - Qiita

    あるかと思ったら意外とネットに情報がなかったのでまとめ。 イージング関数(Easing Function)は、様々な値の変化の仕方をする関数たちです。 各関数と詳しい形状はこのあたりとかググるとかで見てください。 さて、このEasing Function、元々はアニメーションの動きの指定に使われたりしているらしく、 JavaScriptライブラリjQueryのeasingプラグインなどで実装されています。 これを見るとC/C++,C#でもイージング関数を使えそうだったので参考にしつつ書いてみました。 (ほぼ、なのはElasticだけめんどくさそうだったのでまだやってないだけです)。 jQueryとの対応はf→t、a→min、h→max - min、g→totaltimeです。 エフェクト作ったりするときに役に立つかも? ちなみにt==0でminの値、t==1でmaxの値になります。 //イ

    イージング関数を使いたい@C++ - Qiita
  • 数値演算のアルゴリズム

    3Dの計算処理では、「正確性よりも速度を求める」という場合がよくあります(特にリアルタイム)。 そのあたりで使えそうな、数値演算のアルゴリズムをまとめてみました。 sqrt:平方根を求める C言語では"math.h"の「sqrt」で平方根を計算します。 これと同等の機能をするプログラムは以下のようになります。 浮動小数点での平方根の計算 double mySqrt(double x) { double s,last; if(x<=0.0) return 0.0; if (x > 1) s = x; else s = 1; do { last = s; s = (x / s + s) * 0.5; } while (s < last); return last; } 整数での平方根の計算 int myISqrt(int x) { int s, t; if (x <= 0) return 0;

    dotsarg
    dotsarg 2016/09/29
    平方根、距離計算、余り計算を高速に行う方法が記載されている。
  • 片山博文MZのOLDホームページ

    の 壮大なる目的のためだった 更新日時: 2025年07月01日 コンピュータ研究家、片山博文MZのホームページです。 自己紹介 | ソフトウェア | ReactOS | 掲示板 | GitHub | 止ブ | 合同会社イナホメゼル | 第三コロニー お知らせ:現在、止まんないブログへの移転を行っております。 Windowsソフトウェア ウィンドウズ用の便利なフリーソフトやシェアウェアを配布しています。 画像カラスンポ Pro ver.1.2 画像の上の名目上の寸法や角度を測定できるソフトです。 ※ 窓の杜に掲載されました。窓の杜様ありがとうございます。 クロスワード ギバー ver.5.2.8 「クロスワード ギバー」は、人工知能でクロスワード パズルを自動で作成するソフトです。 ※ Mr.PC 2020年11月号に掲載されました! Mr.PC編集部様ありがとうございます。 リソーエディ

  • 圧縮形式yz2 - やまざき@BinaryTechnology

    dotsarg
    dotsarg 2016/05/12
    zip より高圧縮なアルゴリズム。
  • Hotate’s Core

  • ビットを数える・探すアルゴリズム

    作成日:2004.05.04 修正日:2012.09.01 このページは 2003年の9/11、9/28 の日記をまとめて作成。 はじめに PowerPC 系や Alpha などには population count と呼ばれるレジスタ中の立っているビット数を数える命令が実装されている。 集合演算を行うライブラリを実装したい場合などに重宝しそうな命令である。 職場でこの population count 命令について話をしているうちにビットカウント操作をハードウェアで実装するのは得なのか?という点が議論になった。 CPU の設計をできるだけシンプルにするためには、複雑で使用頻度の低い命令は極力減らした方がよい。 例えば SPARC は命令セット中にビットカウント演算があるが、CPU 内には実装しないという方針をとっている(population 命令を実行すると不正命令例外が発生し、それを

  • P-Stade C++ Libraries

    Ketchup The Replacement for BEGIN_MSG_MAP of ATL/WTL using Class Templates

  • noocyte のプログラミング研究室

    「生涯一プログラマ」志望の中年プログラマ noocyte (ヌーサイト) です. 主にプログラミングやアルゴリズムの話題と,自作フリーソフトを扱っています. 自分で考案したことを中心として,なるべくここにしかない情報を書くようにしています. よそに書いてあることは,そこを見ればすむことなので, わざわざここで同じことを書く気力が湧きません. (私はズボラなので.) 自分で考案したアルゴリズムやデータ構造を中心に解説します. メモリ管理 アラインメントの大きなメモリ領域を確保する方法 アラインメントの大きなメモリ領域を用いて, 高速かつメモリ効率の良い多数の集合を実現する方法 幾何学・CG のアルゴリズム集 3点の座標から簡単に角度と回転方向を求める.(2・3・N次元,外積を用いる方法) 多角形の面積,重心(図心),断面N次モーメントの公式と,向き (頂点列の回転方向) の判別方法 (Win

  • C++0x More STL Algorithm - Faith and Brave - C++で遊ぼう

    C++0x で追加される STL アルゴリズム ・find_if_not find_if の逆. pred(*i) == false のイテレータを返す template<class InputIterator, class Predicate> inline InputIterator find_if_not(InputIterator first, InputIterator last, Predicate pred) { while (first != last && pred(*first)) ++first; return first; } #include <vector> #include <algorithm> using namespace std; // 偶数? bool is_even(int value) { return value % 2 == 0; } int

    C++0x More STL Algorithm - Faith and Brave - C++で遊ぼう
  • プログラミング演習III

    ※ 熊谷先生担当の「C++言語課題(上級編)」の「書式不備の返却日」と「書式 修正期限」は月曜日ではなく火曜日となるので注意。 4. 出欠 病気やケガ,忌引など,正当な理由があってやむをえず欠席する場合には, 必ず担当者に連絡すること. 補講などについて担当者から指示される. (連絡先はここを参照すること) 遅刻やレポート提出の遅れは,成績評価の際に減点の対象となる. 20分以上の遅刻は欠席として扱われるので注意すること. また,無断欠席した場合,単位の保証はしない. 5. 成績評価 単位取得のためには,全回出席すること,および,授業中に課せられたすべて のレポートが受理されることが必要である.正当な理由があって欠席した場合 は,別途考慮する.前記の条件を満たした者に対し,レポート内容,レポート 提出状況,授業態度等を総合して評価を行う. 6. 注意事項 計算機使用上の注意 教育用計算機室

    dotsarg
    dotsarg 2014/01/15
    穴掘り法についての説明が掲載されている。
  • 1