初めて論文を書くあなたへ_論文執筆の際に頻回に行ったアドバイスをまとめました.私が目指す格好いい論文を書くためのtipsです.

We have C++14! - Standard C++ C++14のDIS(Draft International Standard)に対する各国の投票が行われ、満場一致で承認されました。各国から(主に日本から)のコメントによる文面の細かな修正が残っていますが、その作業が完了次第、ISO/IEC 14882:2014(E) Programming Language C++、別名C++14の規格が発行されます。 C++14は、2011年に発行されたC++11に対するマイナーバージョンアップです。小さな機能追加、および文面のバグ修正が含まれます。 C++14の更新内容は、以下のエントリにまとめてあります: C++14の言語拡張まとめ コンパイラの実装状況(言語機能) 次はC++17です。そちらはメジャーバージョンアップになる予定で、その議論はすでに始まっています。
N3924 Discouraging rand() in C++14, v2 C++14では、std::rand()とstd::random_shuffle()が非推奨(deprecated)になります。 std::rand()は昔から問題があると指摘されていて(多くの実装で線形合同法が使われていたり、RAND_MAXが小さかったり)、明確にこの関数の使用を禁止する分野やプロジェクトも多かったので、非推奨になります。std::rand()の代わりに<random>ヘッダの乱数生成器と分布を使いましょう。 std::random_shuffle()はstd::rand()に依存したアルゴリズムなので、道連れで非推奨になります。std::random_shuffle()の代わりにstd::shuffle()を使いましょう。 参照 N3924: Discouraging rand() in C+
何の変哲もないHelloWorld。 #include <iostream> int main() { std::cout << "Hello, おにいちゃん!!" << std::endl; return 0; }こいつをclangをつかってコンパイル。 # clang -xc++ hello.cpp /tmp/cc-x0SPbV.o: In function `__cxx_global_var_init': hello.cpp:(.text+0xc): undefined reference to `std::ios_base::Init::~Init()' hello.cpp:(.text+0x30): undefined reference to `std::ios_base::Init::Init()' /tmp/cc-x0SPbV.o: In function `main':
以前から気になっていたんですがやっと試してみました。 OverloadedFunction を使用すれば複数の関数を1つの関数オブジェクトにまとめる事ができます。 [ソース] #include <boost/functional/overloaded_function.hpp> #include <boost/lexical_cast.hpp> #include <string> #include <iostream> std::string to_string(int n){ return boost::lexical_cast<std::string>(n); } int to_int(std::string str){ return boost::lexical_cast<int>(str); } int main(){ // 複数の関数を1つの関数オブジェクトにまとめる boost
そういえば、ラムダ式って継承できるのかーと思いつつ書いてみた。 [ソース] #include <utility> template<typename ...Args> struct overload; template<typename T> struct overload<T> : T{ using T::operator(); template<typename TT> overload(TT&& t) : T(std::forward<TT>(t)){} }; template<typename T, typename U, typename ...Args> struct overload<T, U, Args...> : T , overload<U, Args...>{ using T::operator(); using overload<U, Args...>::opera
C++11では、std::allocator_traitsというアロケータアクセスの中間インタフェースが用意されたおかげで、自作アロケータに必要な実装がだいぶ減りました。 自作アロケータに必要な最小コードは、以下のようになります。 要素型value_type 特殊関数(デフォルトコンストラクタ、コピーコンストラクタ、ムーブコンストラクタ) 別な要素型のアロケータを受け取るコンストラクタ allocate()メンバ関数。(hintパラメータはあってもなくてもいい) deallocate()メンバ関数 operator==とoperator!= サンプルコード: #include <new> template <class T> struct MyAllocator { // 要素の型 using value_type = T; // 特殊関数 // (デフォルトコンストラクタ、コピーコンスト
あけましておめでとう! gihyo.jpでははじめまして。私、暮井 慧。よろしくね! みんなはもう、今年の“初”プログラミングはした? いろいろなプログラミング言語があるけど、今年はどんなことが起きるのか気になるよね? そんな人たちのために、いろいろな言語について、去年のふりかえりと、今年の動向なんかを詳しい人に聞いてきたよ! 「いろいろ」といっても、ちょっと偏っているかもだけど……お正月早々、細かいことは気にしないほうがいいよね! C# 最初は、C#のことならなんでも知っているC#たん! こんにちは! こんにちは! C#の2013年はどんな年でした? 慧 さっそくだけど、去年のC#ってどんな感じだったの? C#たん 2013年は、C#を使って開発できるプラットフォームが一気に広がった年でした。携帯端末ではiOSやAndroid、ゲーム機ではPlayStationなど、マイクロソフト
この記事はC++ Advent Calendar 2013の15日目にエントリしています。 内容はC++標準ライブラリとスレッドセーフに関する解説になります。 flickr / rennasverden もくじ What's スレッドセーフ? スレッドセーフという幻想 基本型とデータ競合 C++標準ライブラリとデータ競合 C++標準ライブラリ:シーケンスコンテナ編 C++標準ライブラリ:連想コンテナ編 スレッドセーフ RELOADED 基本的なスレッドセーフ保証 std::shared_ptr<T> std::rand() std::cout (本文のみ約9000字) はじめに マルチスレッド対応の点では他言語に遅れを取っていたプログラミング言語C++ですが、C++11ではようやく標準ライブラリにスレッドサポートが追加されました。C++11スレッドサポートではスレッドクラスstd::thr
この記事は、C++ (fork) Advent Calendar 2013の3日目です。 現在、Boostのソースコード管理はSubversionからGitへ乗り換えた上でGitHubへの移行が進められています (github.com/boostorg (Boost.org))。そこで、この記事ではGitリポジトリからBoostを使用する方法のまとめを書きます。 なお、この記事の対象はWindowsです。以下の説明でもmsysGitのgit bashとVisual Studioコマンドプロンプトが混在しています。$で始まる行はgit bash、>で始まる行はVisual C++へのパスが通ったコマンドプロンプトで実行したものです。実行速度が速いのでmsysGitで試しましたが、Cygwinでも可能だと思います。 最新版を使うまず簡単なところからです。masterやdevelopブランチなど
先日、「C++14 std::complexの標準ユーザー定義リテラル」を書きました。 今回は、文字列オブジェクトリテラルと、時間リテラルを紹介します。 basic_stringリテラル sサフィックスを付けた文字列リテラルは、basic_stringクラスのオブジェクトになります。 using namespace std::string_literals; std::string a = "hello"s; std::string b = u8"hello"s; // UTF-8のstd::stringリテラル プレフィックスでLを付けるとwstring、uを付けるとu16string、Uを付けるとu32stringになります。 using namespace std::string_literals; std::wstring c = L"hello"s; std::u16string
C++14には、標準ライブラリにユーザー定義リテラルがいくつか定義される予定です。今回は、複素数クラスであるstd::complexのユーザー定義リテラルを紹介します。 これは、以下のようにして使います。 using namespace std::complex_literals; std::complex<double> c = 2.0i; std::cout << c.real() << std::endl; // 0 std::cout << c.imag() << std::endl;// 2 複素数リテラルは、リテラル値として虚部の値をとります。実部の値は0です。 サフィックスをiにするとcomplex<double>型オブジェクトが作られます。 complex<long double>の場合はil、complex<float>の場合はifをサフィックスにします。 std::co
N3638 Return type deduction for normal functions ラムダ式では、return文から戻り値の型を自動的に推論してくれますが、通常の関数は推論してくれません。この提案は、ラムダ式と同じく、通常の関数でも戻り値型を推論できるようにしよう、というものです。 通常の関数で戻り値を推論してほしい場合は、関数宣言の戻り値型を「auto」にします。 auto f(); // 関数f()の宣言。戻り値の型は「不明」。 auto f() { return 1; } // 関数f()の戻り値型はint int x = f(); // x == 1 参照型を返したい場合は、戻り値の型をauto&にします。 int x = 3; auto& f() { return x; } int& r = f(); ここまでの機能は、GCC 4.8で-std=c++1yオプション
The document discusses the practicality of running large C++ 3D games in web browsers using technologies like Emscripten, Flascc, and Google Native Client, emphasizing C++'s cross-platform capabilities and performance advantages. It highlights Emscripten for its open-source nature and performance optimization through LLVM, enabling seamless integration and efficient memory management. The paper al
コンテナに複数のインデックスを持てるBoost.MultiIndexですが、単一のインデックスだけを持たせるだけでも便利に使えます。ここでは、std::setを置き換えて使ってみます。 std::setにユーザー定義型を格納する場合、キーの比較を自分で定義する必要があります。そしてその比較が一部のメンバ変数だけで完結する場合、std::setでは比較に必要なメンバ変数以外に、ダミーの値を入れたオブジェクトを作る必要があります。 #include <iostream> #include <set> struct X { int a = 0; int b = 0; int c = 0; X(int a, int b, int c) : a(a), b(b), c(c) {} }; struct XLess { bool operator()(const X& x, const X& y) co
N3572 Unicode Support in the Standard Library Unicodeライブラリが提案されています。 このライブラリの特徴は、文字列をcharやwchar_tのような固定長の文字型のコンテナとしてではなく、コードポイント(文字)のコンテナとして定義しているところです。「"あいうえお"」という文字列があった場合、エンコーディングに寄らず、文字列のサイズを取得すると、コードポイントの数である5になります。 基本的な使い方は以下のようになります: // UTF-8の文字列 encoding_string<encoding::utf8> s1(u8"あいうえお"); // システムの文字コードからUTF-8に変換 encoding_string<encoding::utf8> s2("あいうえお", encoding::system); // 文字数を取得(5が
(2013-04-07 01:30追記)補足のコードに恥ずかしい間違いがあったのを修正しました。@nonakapさん、id:s-tomoさん、ご指摘ありがとうございます。 (2013-04-07 10:00追記)「補足その2」を書き足しました。 (2017-04-23追記)論旨がわかりにくい部分があったので、整理しました stackoverflowの記事「“while( !feof( file ) )” is always wrong」をざっくり翻訳してみます。これはWilliam Pursellさんによる自作自演スレ(回答者も本人)で、Cでwhile( !feof( file ) )というループを作るのが悪い理由を説明するものです。 ちなみにPHPについてもほぼ同じことが言えますので、PHPプログラマの方にも一読をお勧めします(PHPの主要なファイル操作関数はCとほぼ同じインターフェース
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く