We tried to load scripts but something went wrong. Please make sure that your network settings allow you to download scripts from the following domain: https://id-frontend.prod-east.frontend.public.atl-paas.net
この記事は 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++書き向けの資料が不足しているので, 普段使い*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! > ∨∨∨∨∨∨∨∨∨ _ _ `/っ) /っ) / / ∧_∧ / / ∧_∧ \\( )\\(
NumPy や SciPy をはじめとする科学計算ライブラリは機能が豊富なだけでなく、インタプリタ言語とは思えないほど非常に高速に動作します。それもそのはずで、ソースコードを読めばわかるとおり、内部の実装においては C や Fortran といったコンパイル言語で書かれた枯れた機能を利用しています。 これらにならい Python や Ruby などで定期的に何度も呼び出す計算のうち、汎用性のあるものについては C/C++ といったコンパイル言語を利用して拡張機能として記述すると効率的になります。メリットとデメリットは次の通りです。 メリット … その部分の処理が数十倍以上と高速になる デメリット … C/C++ の実装に依存し可搬性を失う、実装が複雑になる プロトタイピングの一環としてあとで C/C++ で実装する前にインタプリタ言語を利用する場合においても、ライブラリの部分を C/C++
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
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++の開発者のコミュニティ、およびそのコミュニティによって公開されているオープンソースのソフトウェアライブラリのことを指す。 概要[編集] コミュニティとしてのBoostはC++標準化委員会の委員により設立されており、現在でもその多くが構成員として留まっている。このような経緯もあり、BoostコミュニティはC++の標準化において大きな影響力を有している。実際に標準化委員会が発表した「TR1」の2/3以上がBoostライブラリを基にしている。Random, Regex, ThreadなどはいずれもC++11規格の標準ライブラリとして正式に導入・標準化されている。その後もOptionalやAnyなどがC++17規格で導入されており、影響を与え続けている。このことから、Boostは考案された新機能を標準化させる前の試験運用の場であるとも言える。 Boostで公開さ
問題 以下の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の文法と機能(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
最近スマートフォンに乗り換えました。徳永です。 C++は世に数あるプログラミング言語の中では比較的メモリを食わない方ですが、それでもメモリ使用量が問題となる場合はあります。そのような場合の対処方法はいくつか有りますが、手軽に選択できる方法として、今日はSTLのmapやunordered_mapと同じ感じで使えるデータ構造をいくつか紹介したい思います。 以下、計算量の表記をする際には、要素数をnとします。 Loki::AssocVector LokiはModern C++ Designという本の作者であるAndrei Alexandrescuが開発したライブラリです。AssocVectorはその中の一つとして提供されているクラスで、vector<pair<key, value> >という型のベクターをkeyでソートした状態で持つ事により、二分探索による要素の探索を可能にしたデータ構造です。こ
説明 Modern C++ Design なる本が発売されました。 C++ という複雑な言語のまさに真骨頂とでもいうような、 すごい内容でした。 この本では著者の作ったLokiというこれまたすごいライブラリの解説、 という形でジェネリックプログラミングを語ります。 まあ、とにかくすごいんですが、これを作るのはともかく、 使うのなら凡人でもできるだろう、と。 いつの時代も天才の成果物を凡人が使うのだ、と。 つうか使っている内に Loki が簡単に見えるようになってきました。 良い傾向ですな。 template library と GPL は水油もいいとこだと思うんで、 以下に存在する .cc ファイルと .h ファイルには GPL を主張しません。 つかパブリックドメインつうことで。 更新情報 020627. Loki - AbstractFactory。 020622. Loki - Fa
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
ポリシーやポリシー・クラスは、安全で効率のよい、そしてカスタマイズ性の高い設計用素材の実装を支援するものです。 ポリシー(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
最適化 † コンパイル時に実行ファイルを最適化することにより、実行ファイルのサイズを小さくしたり、実行の速度を上げることができる。 例) 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を回すと
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く