タグ

c++に関するNaruhodiusのブックマーク (40)

  • モダン C++ プログラミング - 日本語公開記事 - Confluence

    このドキュメントはサイボウズ社内のトレーニング用に作成したものです。 作成時点では C++11 はまだあまり利用できない状況でしたので、C++98 ベースの記述になっています。 いずれ更新を予定しています。 モダンの定義モダンとはテンプレートメタプログラミング(TMP)を駆使することです。嘘です。 宗教論争に意味はないので、ここでは 「最近の C++ の仕様・機能を理解し、C より実装効率が良く不具合の少ない」 プログラミング技法を「モダン C++ プログラミング」と定義します。 つまり、不具合が少なく、かつ C にはもう戻れなくなるような効率の良さを達成するものです。 学習効率(ROI)が極めて良くないような技法(例えば TMP)は、この定義では除外されます。 勉強方法お勧めの順序は以下。決して全部を読もうとしないこと。 C++ Language Tutorial のような、あっさりした

  • C++11のすすめ

    この記事は Competitive Programming Advent Calendar Div2013 の 12 月 23 日の記事として書かれました. C++11 のすすめ C++03 は普段から使っているけども C++11 はまだ触ったことがない人向けの入門記事です.最近は多くのプログラミングコンテストで C++11 が使えるようになりつつあります.C++11 で大幅に C++ が書きやすくなっているので,ぜひこの記事を読んで C++11 を使い始めてください!この記事では C++11 に追加された多数の新機能のうちコンテストに役立ちそう(もしくは多くの人が使いそうな)機能を紹介します. 手元での実行の仕方 GCC もしくは clang を利用していれば -std=c++0x というオプションを追加すれば C++11 の機能が有効になります. $ g++ -std=c++0x -o

  • C++ゆとり用 - 藻ログ

    世の中にはわたしのようなライトC++書き向けの資料が不足しているので, 普段使い*1用途で収集したものをまとめてみました. ドキュメントを読む C++プログラミングガイド モダン C++ プログラミング - 日語公開記事 - サイボウズエンジニアのWIKI STLのドキュメント cplusplus.com - The C++ Resources Network C++ reference - cppreference.com clangを使う Clang - Wikipedia gccよりもclangの方がC++ 規格に準拠しているとうたわれています. また, コンパイルもちょっと速い. *2 標準ライブラリを使う ∧∧∧∧∧∧∧∧∧ < STL!STL!STL!STL! > ∨∨∨∨∨∨∨∨∨ _     _ `/っ)    /っ) / / ∧_∧ / / ∧_∧ \\(   )\\(

    C++ゆとり用 - 藻ログ
  • 処理の一部を C++ で実装する - Qiita

    NumPy や SciPy をはじめとする科学計算ライブラリは機能が豊富なだけでなく、インタプリタ言語とは思えないほど非常に高速に動作します。それもそのはずで、ソースコードを読めばわかるとおり、内部の実装においては C や Fortran といったコンパイル言語で書かれた枯れた機能を利用しています。 これらにならい PythonRuby などで定期的に何度も呼び出す計算のうち、汎用性のあるものについては C/C++ といったコンパイル言語を利用して拡張機能として記述すると効率的になります。メリットとデメリットは次の通りです。 メリット … その部分の処理が数十倍以上と高速になる デメリット … C/C++ の実装に依存し可搬性を失う、実装が複雑になる プロトタイピングの一環としてあとで C/C++ で実装する前にインタプリタ言語を利用する場合においても、ライブラリの部分を C/C++

    処理の一部を C++ で実装する - Qiita
  • boost::split - C++入門

    概要 C言語の場合、文字列を分解するときに、strtok を使ったりします。 C++の場合は、string の find_first_of を使って、ループを回していくやりかたもあります。 どちらも実装しないといけないので、非常に面倒です。 もっと簡単にやる方法は、 boost::split を使うことです。 また、文字列の前後のデミリタの処理には、boost::trimを利用するとよいでしょう。 ヘッダファイル

  • Boost C++ Libraries

    Boost C++ Libraries ...one of the most highly regarded and expertly designed C++ library projects in the world. — Herb Sutter and Andrei Alexandrescu, C++ Coding Standards Welcome to Boost.org! Boost provides free peer-reviewed portable C++ source libraries. We emphasize libraries that work well with the C++ Standard Library. Boost libraries are intended to be widely useful, and usable across a br

    Boost C++ Libraries
  • letsboost::string_algo

    sample サンプルの動作確認バージョン [GCC4.4/1.41.0] [VC9/1.41.0] #include <iostream> #include <string> #include <vector> #include <boost/algorithm/string.hpp> using namespace std; int main() { string message = "This is a pen"; // 文字列messageを空白文字で区切ってvに格納 vector<string> v; boost::algorithm::split( v, message, boost::algorithm::is_space() ); // vの要素を"-"で結合して表示 cout << boost::algorithm::join( v, "-" ) << endl; } 出

  • Boost C++ライブラリ - Wikipedia

    Boost (ブースト)とは、C++の開発者のコミュニティ、およびそのコミュニティによって公開されているオープンソースのソフトウェアライブラリのことを指す。 概要[編集] コミュニティとしてのBoostはC++標準化委員会の委員により設立されており、現在でもその多くが構成員として留まっている。このような経緯もあり、BoostコミュニティはC++の標準化において大きな影響力を有している。実際に標準化委員会が発表した「TR1」の2/3以上がBoostライブラリを基にしている。Random, Regex, ThreadなどはいずれもC++11規格の標準ライブラリとして正式に導入・標準化されている。その後もOptionalやAnyなどがC++17規格で導入されており、影響を与え続けている。このことから、Boostは考案された新機能を標準化させる前の試験運用の場であるとも言える。 Boostで公開さ

  • Charming Python: Functional programming in Python, Part 3

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    Charming Python: Functional programming in Python, Part 3
  • C++言語で簡単なRuby拡張ライブラリを書いてみた

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    C++言語で簡単なRuby拡張ライブラリを書いてみた
  • テンプレートの実体化の実装方法とODR違反について

    問題 以下のC++コードを考える。 int plus( int a, int b ) { return a + b ; } double plus( double a, double b ) { return a + b ; } このC++コードは、int型とdouble型以外、コードはほぼ同じである。 しかし、ほとんどのコンピューターではint型とdouble型は操作方法が異なるため、この2つの関数は、全く別のコンピューターが処理できるコードに変換される。 ところで、古典的なC言語やC++コンパイラーの実装方法として、ソースコードのファイルをそれぞれ、一つ一つの翻訳単位としてコンパイルし、翻訳単位ごとにオブジェクトファイルを生成し、リンカーで複数のオブジェクトファイルを結合(リンク)して、単一のプログラムを生成するというものがある。 よくある実装では、オブジェクトファイルは、その翻訳単位

  • 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

  • STL風に使えるマップ型コンテナの紹介と性能比較 - Preferred Networks Research & Development

    最近スマートフォンに乗り換えました。徳永です。 C++は世に数あるプログラミング言語の中では比較的メモリをわない方ですが、それでもメモリ使用量が問題となる場合はあります。そのような場合の対処方法はいくつか有りますが、手軽に選択できる方法として、今日はSTLのmapやunordered_mapと同じ感じで使えるデータ構造をいくつか紹介したい思います。 以下、計算量の表記をする際には、要素数をnとします。 Loki::AssocVector LokiはModern C++ Designというの作者であるAndrei Alexandrescuが開発したライブラリです。AssocVectorはその中の一つとして提供されているクラスで、vector<pair<key, value> >という型のベクターをkeyでソートした状態で持つ事により、二分探索による要素の探索を可能にしたデータ構造です。こ

  • たぶん究極のC++ライブラリ、Lokiを使う

    説明 Modern C++ Design なるが発売されました。 C++ という複雑な言語のまさに真骨頂とでもいうような、 すごい内容でした。 このでは著者の作ったLokiというこれまたすごいライブラリの解説、 という形でジェネリックプログラミングを語ります。 まあ、とにかくすごいんですが、これを作るのはともかく、 使うのなら凡人でもできるだろう、と。 いつの時代も天才の成果物を凡人が使うのだ、と。 つうか使っている内に Loki が簡単に見えるようになってきました。 良い傾向ですな。 template library と GPL は水油もいいとこだと思うんで、 以下に存在する .cc ファイルと .h ファイルには GPL を主張しません。 つかパブリックドメインつうことで。 更新情報 020627. Loki - AbstractFactory。 020622. Loki - Fa

  • Modern C Design―ジェネリック・プログラミングおよびデザイン・パターンを利用するための究極のテンプレート活用術

    Modern C Design―ジェネリック・プログラミングおよびデザイン・パターンを利用するための究極のテンプレート活用術
  • サービス終了のお知らせ

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

  • cxx-conversion - GCC Wiki

    C++ Conversion This project is a continuation of the build GCC in C++ project. Its goal is to explore re-implementing some existing GCC components in C++. Related Projects Unified debugging dumps. Alternatives to GC. Simplified GIMPLE generation. Documentation New API for vectors. Status 2012-08-14: The branch has been merged into trunk. There is no code left in the branch for now. If major re-wri

  • 1章 1.5 ポリシーとポリシー・クラス - Modern C++ Designを読む(1) - higepon blog

    ポリシーやポリシー・クラスは、安全で効率のよい、そしてカスタマイズ性の高い設計用素材の実装を支援するものです。 ポリシー(policy)とは、クラス・インターフェースやクラス・テンプレートのインターフェースを定義するものです。 インターフェースは内部型の定義、メンバ関数、メンバ変数によって構成されます。 全然分からねぇぇぇぇ。 というわけでサンプルコードを写経しよう。(一部変えてます) Hello Worldクラス class HelloWorld { public: void say() { printf("Hello, World!\n"); } };Policyを2つ用意 template <class T> struct OpNewCreator { static T* Create() { return new T; } }; template <class T> struct

    1章 1.5 ポリシーとポリシー・クラス - Modern C++ Designを読む(1) - higepon blog
  • 中3女子でもわかる constexpr

    constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだGenya Murakami

    中3女子でもわかる constexpr
  • 計算機/C++ - Klabo-Wiki

    最適化 † コンパイル時に実行ファイルを最適化することにより、実行ファイルのサイズを小さくしたり、実行の速度を上げることができる。 例) g++ -O3 test.cpp 最適化オプションにはいくつか種類がある。-O1 -O2 -O3 数字が大きい程,コンパイルには時間がかかるが実行速度が上がる。 ↑ 前置インクリメント † forでカウンタをインクリメントするだけなら後置インクリメント(i++)でも前置インクリメント(++i)でも結果は同じになる。が、i++だと前の値を記憶してからプラスする(一時オブジェクトを作るという無駄が発生する)ので、++iのほうがいいらしい。特にイテレータのとき。 for(vector<int>::iterator it=v.begin(); it!=v.end(); ++it){ //中身 } ↑ for, whileの継続条件 † forやwhileを回すと