質問内容 「C++の演算子のオーバーロードは悪いのところ」はどこですか? 質問の背景 なんで、そもそもC++の演算子のオーバーロード悪いと思っているかというと、 以下のサイトで、 これを見て「あっ、C++の演算子オーバーロードだ、殺せ!」となったキミ、ちょっと待ってほしい。実はね... http://d.hatena.ne.jp/xef/20130309/p1 という記述を前に見たことがあったからです。 笑い混じりに「殺せ」と使っている様子をみると、C++演算子の演算子のオーバーロードに多少問題があるのだろうなと思いました。 問題になるケースをC++のコードで、書いていただけるとありがたいです。 (追記)ベストアンサーについて (追記)2017/03/21 11:08 書き込んでくれた皆様、 書き込もうとしてやっぱりやめってしまった方、 この質問について真剣に考えてくださった方、 ありがと
ホーム<ゲームつくろー!<衝突判定編 3D衝突編 その15 8分木空間分割を最適化する! 空間分割はオブジェクト同士の衝突や不必要な描画を除くなどパフォーマンスの最適化に必須の技術です。2D衝突編その8とその9では、2D平面を分割する4分木空間分割の最適化と実装をしました。同じ考え方は3D空間の分割にも十分に活用できます。 3Dの空間を分割する典型が8分木空間分割(Octree)です。空間分割の方法は、4分木とお話がかぶりますが、まず一番大きな空間(ルート空間)を定義します。3Dの場合これは直方体となります。分割は各辺のど真ん中を割ります。縦横高さそれぞれで分けるので、1回の分割で8つの小空間が出来上がります。これで親であるルート空間の下に8つの小空間が所属する事になります。後は空間を分割するたびに樹状に所属が広がっていきます。 オブジェクトは境界図形に包まれて、8分木内にある境界図形をす
関数の途中で戻って再開出来るとか、C言語コードだけ見てたらとても奇妙な冒険。 #include "stdafx.h" #include <Windows.h> const int LOOP_COUNT_IN_MAIN = 5; const int LOOP_COUNT_IN_FIBER = 5; PVOID pMainFiber; PVOID pFibers[4]; struct DestroyChecker { ~DestroyChecker() { printf("Fiber[%p]: Destroyed.\n"); } }; VOID WINAPI FiberFunc(PVOID pvParam) { DestroyChecker d; for (int i = 0; i < LOOP_COUNT_IN_FIBER; ++i) { printf("Fiber[%p]: %d (%x)
C++の構文解析ライブラリが欲しい!! C++の構文解析ライブラリが欲しくて、いろいろ調べたところ、clang / LLVMのlibToolingが正にぴったりです。しかも、BSDライクなライセンスのオープン・ソース!! そこで、これを使ってC++のAST(の最低限)をダンプするごく小さなツールを作ってみました。(200行ちょっとのcppを1つだけ) AST簡易ダンプ・ツールは32bitsアプリとしてビルドしています。 Windows 7 Professionalの64bit版で動作確認しましたが、Windows 7 32bit版でも動くと思います。 1.使用ツールのインストール LLVMはWindows上ではVisual Studioのみ動作確認されているようですので、Visual Studioを使った方がよいのですが、今回はMinGW+QtCreatorを使いました。(Visual S
本サイトcpprefjpは、プログラミング言語C++のリファレンスを提供するWebサイトです。 最新C++バージョンのリファレンスを提供していきます。 運営方針 本リファレンスサイトは、C++言語の最新のリファレンスを常に提供し続けることを目標にしています。 各クラス、関数にはそれぞれ1つ以上のサンプルコードを付けていく方針です。 本サイトでは、他サイトおよび規格書の直接的な翻訳ではなく、編集者の調査と考えに基づいた解説を提供していきます。 HTMLデータのダウンロード cpprefjp.github.io-master.zip ローカルで閲覧できるHTMLを用意しています。 スポンサーシップ cpprefjp - Open Collective このプロジェクトは、持続的な活動のため、ユーザーの方々からのご支援をお待ちしております。上記Open Collectiveのプロジェクトでスポン
ソース: static_map.hpp - Shand C++ Library テスト: static_map/test.cpp - Shand C++ Library boost::container::static_vectorをラップして、static_mapを作りました。 ローカル変数で気軽にmapを使う、というのが主な目的です。 使い方: 第3テンプレート引数で、最大要素数を指定する。 初期化子リストで初期化する。 at()メンバ関数で検索する。 以上です。簡易的な用途を想定しているので、それ以外の機能は一切持たせていません。 以下のように、対応表による変換を簡潔に書き、switch文の代わりに使うのが目的です。 #include <iostream> #include <boost/utility/string_ref.hpp> #include <shand/static_m
tokuhiromさんがnanowwwという、C++から簡単にHTTPが扱えるクライアントライブラリを書いてくれたので、botを書いてみた。 tokuhirom's nanowww at master - GitHub C++ lightweight, fast, portable HTTP client library http://github.com/tokuhirom/nanowww picojsonは以前ご紹介した通り、kazuhoさんが書いたC++からSTLと親和性の高いJSONパーサです。 今回はtokuhiromさんが、C++で、もちろんSTLと親和性の高いHTTPクライアントライブラリを書いてくれました。 これを使えば、例えばhttp://example.com/fooというURLにPOSTで"name=hasegawa"を送信するとした場合 nanowww::Clien
C++0x では、各コンテナに emplace/emplace_back/emplace_front/emplace_hint というメンバ関数が追加されます。 こういうクラスがあった場合 struct something { something(int, int, int); }; something をコンテナの要素として追加する場合、 C++03 では以下のようにしていました。 vector<something> v; v.push_back(something(1, 2, 3)); この方法では、 something のコンストラクタによる一時オブジェクトの生成と、コピーのコストが発生します。 Placement Insert では、可変引数テンプレートによって要素型のコンストラクタ引数を受け取ることで 要素をコンテナ内で一度だけ生成し、コピーのコストをなくします。 vector<
[ C++で開発 ] インクルードガード 少し込み入ったプログラムを開発していると、ヘッダファイルを2重にincludeしてしまい、コンパイルエラーとなることがあります。ここでは、その回避方法として使われる内部インクルードガードと、include処理時間を大幅に削減しコンパイル時間を短くする冗長インクルードガードの2つを取り上げます。 (追加)最近のGCCでは#pragma onceも無警告で使用できるようになっているようです。 インクルードガードの必要性 2重インクルードの発生 まず、2重インクルードが発生する例を見てみます。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く