タグ付けされた質問 「c++」

C ++は汎用プログラミング言語です。もともとCの拡張として設計され、構文は似ていますが、現在は完全に異なる言語になっています。このタグは、C ++コンパイラでコンパイルされる(される)コードに関する質問に使用します。特定の標準リビジョン[C ++ 11]、[C ++ 14]、[C ++ 17]または[C ++ 20]などに関連する質問には、バージョン固有のタグを使用します。

4
メモリアライメント:alignof / alignasの使い方は?
現在、共有メモリを使用しています。 わからないalignofとalignas。 cppreferenceが不明確です:alignof「alignment」を返しますが、「alignment」とは何ですか?次のブロックを整列させるために追加するバイト数?パッド入りサイズ?スタックオーバーフロー/ブログエントリも不明確です。 誰かが明確に説明できますalignofとalignas?

9
c ++ dequevsキューvsスタック
キューとスタックは広く言及されている構造です。ただし、C ++では、キューの場合、次の2つの方法で実行できます。 #include <queue> #include <deque> しかし、スタックの場合は、このようにすることしかできません #include <stack> 私の質問は、キューと両端キューの違いは何ですか、なぜ2つの構造が提案されたのですか?スタックの場合、他の構造を含めることができますか?
82 c++  containers 

3
非正規化浮動小数点数とは何ですか?
isnormal()リファレンスページは次のように述べています。 指定された浮動小数点数argが正規であるかどうか、つまり、ゼロ、非正規化数、無限大、またはNaNのいずれでもないかどうかを判別します。 数値がゼロ、無限、またはNaNであることは、それが何を意味するかを明確にしています。しかし、それはまた、異常と言います。数が非正規化数になるのはいつですか?

4
C ++ 0xとC ++ 11の違いは何ですか?
ここSOでは、これら2つの用語が混在して使用されています。 ウィキペディアは言う C ++ 11、以前はC ++ 0xとしても知られていました... でも理由はわかりません。 なぜ最初にC ++ 0xと呼ばれ、次にC ++ 11と呼ばれたのですか? また、xは何の略ですか?私の推測-変数のように?
82 c++  c++11 


26
どのC ++標準ライブラリラッパー関数を使用していますか?
今朝尋ねられたこの質問は、C ++標準ライブラリに欠けていると思う機能と、ラッパー関数でギャップを埋めるためにどのように取り組んだのか疑問に思いました。たとえば、私自身のユーティリティライブラリには、ベクトル追加用の次の関数があります。 template <class T> std::vector<T> & operator += ( std::vector<T> & v1, const std::vector <T> & v2 ) { v1.insert( v1.end(), v2.begin(), v2.end() ); return v1; } これは(多かれ少なかれ)任意のタイプをクリアするためのものです-std :: stack:のようなものに特に役立ちます template <class C> void Clear( C & c ) { c = C(); } もう少しありますが、どれを使っているのか興味がありますか?ラッパー関数への回答を制限してください。つまり、コードは数行以内です。
81 c++ 

6
BjarneはこのADLの例について間違っていますか、それともコンパイラのバグがありますか?
私はC ++プログラミング言語第4版(Bjarne Stroustrupによる)について読んでいます引数依存のルックアップ。引用は次のとおりです(26.3.6、過度に攻撃的なADL): 引数に依存するルックアップ(ADLと呼ばれることが多い)は、冗長性を回避するのに非常に役立ちます(14.2.4)。例えば: #include <iostream> int main() { std::cout << "Hello, world" << endl; // OK because of ADL } 引数に依存するルックアップendlがないと、マニピュレータは見つかりません。そのまま、コンパイラは、への最初の引数<<がでostream定義されていることに気付きstdます。したがって、それは探しendlでstd、それ(内を検索します<iostream>)。 そして、コンパイラー(C ++ 11モード)によって生成された結果は次のとおりです。 prog.cpp: In function ‘int main()’: prog.cpp:4:36: error: ‘endl’ was not declared in this scope std::cout << "Hello, world" << endl; ^ これはコンパイラまたは本のバグです。規格は何と言っていますか? 更新: 少し明確にする必要があります。正しい答えはを使用することstd::endlです。質問は本の中のテキストについてでした。ラクランイーストンはすでにそれだけでタイプミスではない、と述べました。段落全体が(おそらく)間違っています。その本が他の(あまり知られていない)著者によるものであれば、私はこの種の誤りを受け入れることができますが、それがビャーネによって書かれたので、私は疑っていました(そして今でもそうです)。

6
CとC ++で異なる動作をする列挙型定数
なぜこれを行うのですか? #include <stdio.h> #include <limits.h> #include <inttypes.h> int main() { enum en_e { en_e_foo, en_e_bar = UINT64_MAX, }; enum en_e e = en_e_foo; printf("%zu\n", sizeof en_e_foo); printf("%zu\n", sizeof en_e_bar); printf("%zu\n", sizeof e); } 4 8 8Cおよび8 8 8C ++(4バイトintのプラットフォーム上)で印刷しますか? このUINT64_MAX割り当てにより、すべての列挙定数が少なくとも64ビットに強制されますがen_e_foo、プレーンCでは32のままであるという印象を受けました。 不一致の理由は何ですか?
81 c++  c 

2
Visual Studioのセキュリティ開発ライフサイクルチェックオプションとは何ですか?
Visual Studio 2013プレビューを使用していますが、以前のバージョンで見たことがあると思います。ウィザードを使用して新しいプロジェクトを作成するときは、C ++、Win32コンソールアプリケーションを選択し、プロジェクトでセキュリティ開発ライフサイクルチェックを有効にするオプションがあります。誰かがこのオプションが私のコード/プロジェクトに何をするのかを正確に説明できますか?

8
C ++でintを列挙型にキャストする一般的な方法
キャストに汎用的な方法があるintのenumではC++? のint範囲内にあるenum場合はenum値を返す必要があり、そうでない場合はexception。をスローします。それを一般的に書く方法はありますか?複数enum typeをサポートする必要があります。 背景:外部列挙型があり、ソースコードを制御できません。この値をデータベースに保存して取得したいと思います。
81 c++  casting  enums 

5
最高の(ポータブルな)クロスプラットフォームの任意精度の数学ライブラリは何ですか?[閉まっている]
閉まっている。この質問は、StackOverflowのガイドラインを満たしていません。現在、回答を受け付けていません。 この質問を改善したいですか?質問を更新して、StackOverflowのトピックになります。 5年前に閉鎖されました。 この質問を改善する CまたはC ++で適切な任意精度の数学ライブラリを探しています。アドバイスや提案をお願いします。 主な要件: これは、必要があります任意の大きな整数を、私の扱う主要な関心は整数です。任意に大きいという言葉が何を意味するのかわからない場合は、100000のようなものを想像してください!(100000の階乗)。 ライブラリの初期化またはオブジェクトの作成中に精度を指定する必要はありません。精度は、システムの利用可能なリソースによってのみ制約される必要があります。 それはすべきプラットフォームのフルパワーを利用し、ネイティブで「小さな」の数字を処理する必要があります。つまり、64ビットプラットフォームでは、(2 ^ 33 + 2 ^ 32)の計算には使用可能な64ビットCPU命令を使用する必要があります。ライブラリは、同じプラットフォームで(2 ^ 66 + 2 ^ 65)を使用する場合と同じ方法でこれを計算するべきではありません。 それは必要があり、効率的付加をハンドル(+)、減算(-)、乗算(*)、整数除算(/)、残り(%)、電源(**)、インクリメント(++)、デクリメント(--)、GCD、階乗、及び他の一般的な算術計算整数。整数の結果を生成しない平方根や対数などの関数を処理する機能はプラスです。記号計算を処理する機能はさらに優れています。 これが私がこれまでに見つけたものです: JavaのBigIntegerクラスとBigDecimalクラス:私はこれまでこれらを使用してきました。ソースコードを読みましたが、その下の計算がわかりません。それは私が学んだことのない理論やアルゴリズムに基づいているのかもしれません。 組み込みの整数型またはbc、Python、Ruby、Haskell、Lisp、Erlang、OCaml、PHP、その他の言語のコアライブラリ:これらのいくつかを使用しましたが、どのライブラリを使用しているかわかりません。彼らが使用している実装の種類。 私がすでに知っていること: 使用するchar小数点以下の桁用とchar*進文字列のため、および使用して数字上の計算を行うfor-loopを。 int(または、、long intまたはlong long)を基本的な「単位」として使用し、そのタイプの配列を任意の長整数として使用し、for-loopを使用して要素の計算を行います。 整数型を使用して、10進数(または数桁)をBCD(2進化10進数)として格納します。 ブースの乗算アルゴリズム。 私が知らないこと: 単純な方法を使用せずに、上記のバイナリ配列を10進数で出力します。単純な方法の例:(1)ビットを最低から最高に追加します:char*1、2、4、8、16、32 、…(2)上記の-文字列を使用して中間の小数の結果を格納します)。 私が感謝すること: GMP、MPFR、decNumber(またはあなたの意見で良い他のライブラリ)の良い比較。 私が読むべき本や記事に関する良い提案。たとえば、ナイーブでない2進化10進変換アルゴリズムがどのように機能するかを示す図があればよいでしょう。ダグラス・W・ジョーンズによる「限られた精度での2進化から10進への変換」という記事は良い記事の例です。 一般的なヘルプ。 (または、、または)を使用するとこの問題を簡単に解決できると思われる場合は、この質問に答えないでください。そう思うと、問題の問題を理解できません。doublelong doublelong long double
81 c++  c  biginteger  bigdecimal  gmp 

10
gluSphere()を使用せずにOpenGLで球を描画しますか?
使用せずにOpenGLで球を描画する方法を説明するチュートリアルはありますgluSphere()か? OpenGLの3Dチュートリアルの多くは、キューブ上にあります。私は検索しましたが、球を描くための解決策のほとんどはを使用することgluSphere()です。このサイトには球を描くためのコードがあるサイトもありますが、球を描く背後にある数学については説明していません。そのリンクの四角形ではなく、ポリゴンで球を描画する方法の他のバージョンもあります。しかし、繰り返しになりますが、球がコードでどのように描画されるのかわかりません。必要に応じて球を変更できるように、視覚化できるようにしたいと思います。
81 c++  opengl  geometry 

5
C ++ライブラリのディレクトリ構造
私はC ++ライブラリに取り組んでいます。最終的には、いくつかの例とPythonバインディングとともに、複数のプラットフォーム(少なくともLinuxとWindows)で公開したいと思います。作業は順調に進んでいますが、現時点ではプロジェクトは非常に厄介で、Visual C ++専用に組み込まれており、マルチプラットフォームではありません。 したがって、クリーンアップが必要だと感じています。私が最初に改善したいのは、プロジェクトのディレクトリ構造です。Automakeツールに適した構造を作成して、複数のプラットフォームで簡単にコンパイルできるようにしたいのですが、これまで使用したことがありません。私はまだVisualStudioで(ほとんどの)コーディングを行っているので、VisualStudioプロジェクトとソリューションファイルも保持する場所が必要になります。 「C ++ライブラリのディレクトリ構造」などの用語をグーグルで検索しようとしましたが、何も役に立たないようです。非常に基本的なガイドラインをいくつか見つけましたが、明確な解決策はありませんでした。 いくつかのオープンソースライブラリを見ていると、私は次のことを思いつきました。 \mylib \mylib <source files, read somewhere to avoid 'src' directory> \include? or just mix .cpp and .h \bin <compiled examples, where to put the sources?> \python <Python bindings stuff> \lib <compiled library> \projects <VC++ project files, .sln goes in project root?> \include? …

6
長方形から長方形への高速交差
2つの長方形が交差しているかどうかをテストする簡単な方法は何ですか? インターネットで検索してこのワンライナー(WOOT!)を思いついたのですが、Javascriptで書く方法がわかりません。C++の古い形式で書かれているようです。 struct { LONG left; LONG top; LONG right; LONG bottom; } RECT; bool IntersectRect(const RECT * r1, const RECT * r2) { return ! ( r2->left > r1->right || r2->right < r1->left || r2->top > r1->bottom || r2->bottom < r1->top ); }

6
const char *とcharconst *-それらは同じですか?
私の理解では、const修飾子は右から左に読む必要があります。それから、私はそれを得る: const char* char要素を変更できないポインタですが、ポインタ自体は変更できます。 char const* mutablecharsへの定数ポインタです。 しかし、次のコードで次のエラーが発生します。 const char* x = new char[20]; x = new char[30]; //this works, as expected x[0] = 'a'; //gives an error as expected char const* y = new char[20]; y = new char[20]; //this works, although the pointer should be const (right?) y[0] …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.