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

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

15
std名前空間の使用
std名前空間に関して 'using'を使用することについては、さまざまな見方があるようです。 「using namespace std」を使用すると言う人もいれば、「」で使用するstd関数にプレフィックスを付けるのではなく、プレフィックスを付けるstd::人もいます。 using std::string; using std::cout; using std::cin; using std::endl; using std::vector; 使用されるすべてのstd関数用。 それぞれの長所と短所は何ですか?
110 c++  namespaces 

5
「IB」と「UB」は正確にはどういう意味ですか?
特に「C ++」のコンテキストで、「IB」および「UB」という用語が何度も使用されているのを見てきました。私はそれらをグーグルで試しましたが、どうやらこれらの2文字の組み合わせには多くの用途があります。:P だから、私はあなたに尋ねます...彼らが悪いことであるかのように言われるとき、彼らはどういう意味ですか?

12
const char * constとconst char *?
C ++に慣れるためにいくつかのサンプルプログラムを実行していて、次の質問に遭遇しました。まず、ここにサンプルコードがあります: void print_string(const char * the_string) { cout << the_string << endl; } int main () { print_string("What's up?"); } 上記のコードでは、print_stringのパラメーターは代わりにconst char * const the_stringでした。これにはどちらが正しいでしょうか? 違いは、1つは定数文字へのポインターであり、もう1つは定数文字への定数ポインターであることです。しかし、なぜこれらの両方が機能するのでしょうか。それはいつ関連しますか?
110 c++  c 

4
C / C ++ NaN定数(リテラル)?
これNaNをに、doubleまたはfloatC / C ++で割り当てることはできますか?JavaScriptのように:a = NaN。したがって、後で変数が数値かどうかを確認できます。
110 c++  nan 

9
doubleに割り当てたときに2つのintを除算すると正しい値が得られないのはなぜですか?
次のスニペットでどうして int a = 7; int b = 3; double c = 0; c = a / b; c予想通り、2.3333ではなく2になります。場合aとbダブルスあり、答えは2.333に変わりはありません。しかし、確かにc すでにdoubleであるため、整数で動作するはずでしたか? では、どうしてint/int=doubleうまくいかないのですか?

8
Qt:-lGLエラーが見つかりません
私はQtCreatorを再インストールし、新しいプロジェクト(Qt Application)を作成し、コンパイル後にこれを取得しました: /usr/bin/ld: **cannot find -lGL** collect2: error: ld returned 1 exit status make: *** [untitled1] Error 1 18:07:41: The process "/usr/bin/make" exited with code 2. Error while building/deploying project untitled1 (kit: Desktop Qt 5.1.0 GCC 32bit) When executing step 'Make' (プロジェクトは空です。変更はコミットしていません) Qt Creator 2.7.2 (Qt 5.1.0(32ビット) Ubuntu 13.04 ベース) …


4
結果が何であれ、ゼロによる除算をサポートする最も速い整数除算は何ですか?
概要: 計算する最速の方法を探しています (int) x / (int) y の例外を得ることなくy==0。代わりに、任意の結果が必要です。 バックグラウンド: 画像処理アルゴリズムをコーディングするとき、私はしばしば(累積された)アルファ値で除算する必要があります。最も単純なバリアントは、整数演算を行うプレーンCコードです。私の問題は、通常、を使用した結果ピクセルに対してゼロ除算エラーが発生することalpha==0です。ただし、これは正確に結果がまったく問題にならないピクセルalpha==0です。のピクセルのカラー値は気にしません。 詳細: 私は次のようなものを探しています: result = (y==0)? 0 : x/y; または result = x / MAX( y, 1 ); xとyは正の整数です。コードはネストされたループで膨大な回数実行されるため、条件付き分岐を取り除く方法を探しています。 yがバイト範囲を超えない場合、私は解決策に満足しています unsigned char kill_zero_table[256] = { 1, 1, 2, 3, 4, 5, 6, 7, [...] 255 }; [...] result = x / …

7
C ++で例外が(舞台裏で)機能する方法
例外は遅いと人々が言っ​​ているのを見続けていますが、証拠はありません。それで、それらがそうであるかどうかを尋ねるのではなく、例外が舞台裏でどのように機能するかを尋ねるので、それらをいつ使用するか、そしてそれらが遅いかどうかの決定をすることができます。 私の知っている限りでは、例外は、何度もリターンを行うのと同じですが、各リターンの後に、別のリターンを行う必要があるか、停止する必要があるかどうかもチェックします。戻るのをいつ停止するかをどのように確認しますか?例外のタイプとスタックの場所を保持する2番目のスタックがあると思います。その後、そこに到達するまで戻ります。また、この2番目のスタックがタッチされるのは、スローと各トライ/キャッチ時だけだと思います。AFAICTが戻りコードを使用して同様の動作を実装すると、同じ時間がかかります。しかし、これはすべて推測にすぎないので、実際に何が起こっているのかを知りたいのです。 例外は実際にはどのように機能しますか?



6
CMakeを使用してC ++プログラムをBoostにリンクする方法
UbuntuでプログラムをBoostライブラリにリンクするには、CMakeファイルはどのように見えるべきですか? 実行中に表示されるエラーmake: main.cpp:(.text+0x3b): undefined reference to `boost::program_options::options_description::m_default_line_length' メインファイルは本当にシンプルです: #include <boost/program_options/options_description.hpp> #include <boost/program_options/option.hpp> using namespace std; #include <iostream> namespace po = boost::program_options; int main(int argc, char** argv) { po::options_description desc("Allowed options"); desc.add_options() ("help", "produce help message") ; return 0; } 私はなんとかやってきた。CMakeファイルに追加した唯一の行は次のとおりです。 target_link_libraries( my_target_file ${Boost_PROGRAM_OPTIONS_LIBRARY} )
109 c++  boost  cmake 

12
仮想関数とvtableはどのように実装されますか?
私たちは皆、C ++の仮想関数を知っていますが、それらは深いレベルでどのように実装されますか? 実行時にvtableを変更したり、直接アクセスしたりできますか? vtableはすべてのクラスに存在しますか、それとも少なくとも1つの仮想関数を持つクラスのみに存在しますか? 抽象クラスは、少なくとも1つのエントリの関数ポインタにNULLを持っているだけですか? 単一の仮想関数を使用すると、クラス全体が遅くなりますか?それとも仮想関数の呼び出しだけですか?また、仮想関数が実際に上書きされているかどうかに関係なく、速度が影響を受けますか、それとも仮想である限り、効果はありません。

7
クラス定義での静的const整数メンバーの定義
私の理解では、C ++では、静的なconstメンバーが整数型である限り、クラス内で定義できます。 では、次のコードでリンカエラーが発生するのはなぜですか。 #include <algorithm> #include <iostream> class test { public: static const int N = 10; }; int main() { std::cout << test::N << "\n"; std::min(9, test::N); } 私が得るエラーは: test.cpp:(.text+0x130): undefined reference to `test::N' collect2: ld returned 1 exit status 興味深いことに、std :: minへの呼び出しをコメントアウトすると、コードは正常にコンパイルおよびリンクされます(test :: Nも前の行で参照されていますが)。 何が起こっているかについて何か考えはありますか? 私のコンパイラはLinux上のgcc 4.4です。

5
rand()%6がバイアスされているのはなぜですか?
std :: randの使用方法を読んでいるときに、このコードをcppreference.comで見つけました int x = 7; while(x > 6) x = 1 + std::rand()/((RAND_MAX + 1u)/6); // Note: 1+rand()%6 is biased 右の表現の何が問題になっていますか?試してみたところ、完全に機能しました。
109 c++  random  std 

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