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

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


8
プリプロセッサマクロが悪である理由と代替手段は何ですか?
私はいつもこれを尋ねてきましたが、本当に良い答えを受け取ったことはありません。最初の「Hello World」を書く前のほとんどのプログラマーは、「マクロは使用してはならない」、「マクロは悪だ」などのフレーズに遭遇したと思います。私の質問は、なぜですか?新しいC ++ 11では、何年も経たないうちに本当の選択肢はありますか? 簡単な部分は、のようなマクロです#pragma。これは、プラットフォーム固有およびコンパイラ固有であり、ほとんどの場合、#pragma once少なくとも2つの重要な状況でエラーが発生しやすいという重大な欠陥があります。異なるパスに同じ名前があり、一部のネットワークセットアップとファイルシステムにエラーがあります。 しかし、一般的に、マクロとその使用法の代替についてはどうでしょうか?

9
Dumpbin.exeが見つかりません
システムにdumpbin.exeがありません。私のシステムにはVisual Studio 2005がインストールされています。コマンドラインでdumpbinと入力すると、認識できないコマンドと表示されます。 デフォルトでVisual Studioに付属していますか、それともこのツールを明示的に追加する必要がありますか?

6
error :: make_uniqueは「std」のメンバーではありません
コードレビューに投稿された次のスレッドプールプログラムをコンパイルしてテストしようとしています。 /codereview/55100/platform-independant-thread-pool-v4 しかし、私はエラーが発生しています threadpool.hpp: In member function ‘std::future<decltype (task((forward<Args>)(args)...))> threadpool::enqueue_task(Func&&, Args&& ...)’: threadpool.hpp:94:28: error: ‘make_unique’ was not declared in this scope auto package_ptr = make_unique<task_package_impl<R, decltype(bound_task)>> (std::move(bound_task), std::move(promise)); ^ threadpool.hpp:94:81: error: expected primary-expression before ‘>’ token auto package_ptr = make_unique<task_package_impl<R, decltype(bound_task)>>(std::move(bound_task), std::move(promise)); ^ main.cpp: In function ‘int main()’: main.cpp:9:17: error: …

6
C ++でのベクトルの初期容量
何であるcapacity()のstd::vectorデフォルトconstuctorを使用して作成されますか?私size()はがゼロであることを知っています。デフォルトの構築されたベクトルはヒープメモリ割り当てを呼び出さないと言うことができますか? このようにして、のような単一の割り当てを使用して、任意の予約を持つ配列を作成することが可能になりますstd::vector<int> iv; iv.reserve(2345);。なんらかの理由で、size()2345から始めたくないとしましょう。 たとえば、Linux(g ++ 4.4.5、カーネル2.6.32 amd64)の場合 #include <iostream> #include <vector> int main() { using namespace std; cout << vector<int>().capacity() << "," << vector<int>(10).capacity() << endl; return 0; } 印刷0,10。それはルールですか、それともSTLベンダーに依存していますか?

4
const-correctnessはパフォーマンスを向上させることができますか?
CまたはC ++コードでconst-correctnessを適用することは、保守性に関して良い習慣であるだけでなく、コンパイラーが最適化を実行できるようになる可能性があることを何度も読みました。しかし、私も完全に反対のことを読みました—それはパフォーマンスにまったく影響を与えないということです。 したがって、constの正当性がコンパイラーのプログラムのパフォーマンス向上に役立つ可能性がある例はありますか?

10
C / C ++の最小double値
C(++)プログラムで最小の負の値を表す(たとえば、負の無限大を使用する)ための標準的および/または移植可能な方法はありますか? float.hのDBL_MINは、最小の正の数です。
92 c++  c  math 

12
C ++ Boost:boost :: system :: generic_category()への未定義の参照
私はBoost自分のプロジェクトにライブラリを含めようとしていますが、同じ問題に直面しています。私はCodeblocksIDEを搭載したUbuntu12.10を使用しており、サイトからの指示を手動で読み取ってライブラリをインストールしようとしましたが、ヘッダーと使用前に構築されるライブラリでエラーが発生していました。 次に、terminalbyを介してライブラリをインストールしましたsudo apt-get install libboost-all-dev。この後、Codeblocksのプログラムに次のようなヘッダーを含めることができます#include <boost/regex.hpp>が、ファイルシステムライブラリ(#include "boost/filesystem/operations.hpp" )のヘッダーを含めようとすると、次のエラーが発生します。 /usr/include/boost/system/error_code.hpp|214|undefined reference to boost::system::generic_category()'| このエラーを解決する方法がわかりません(特にLinuxのコードブロックで)。私は本当にここでいくつかの助けを使うことができました。 コンパイラ:Gcc プログラムコード:上記のファイルシステムoperations.hppファイルのみを含めてみました。 コードブロックからログを作成します。 Build started on: 20-11-2012 at 18:02.53 Build ended on: 20-11-2012 at 18:02.54 -------------- Build: Debug in libopenFrameworks --------------- Target is up to date. -------------- Build: Debug in reader1 --------------- make -s -f Makefile Debug …
92 c++  linux  boost  codeblocks 


2
何かを「ODR使用」するとはどういう意味ですか?
これは、別の質問のコンテキストで発生しました。 どうやら、クラステンプレートのメンバー関数は、ODRで使用されている場合にのみインスタンス化されます。誰かがそれが正確に何を意味するのか説明できますか?一つの定義規則(ODR)上のWikipediaの記事は「言及していないODR-使用を」。 ただし、規格では次のように定義されています 名前が潜在的に評価される式として表示される変数は、定数式(5.19)に表示されるための要件を満たし、左辺値から右辺値への変換(4.1)がすぐに適用されるオブジェクトでない限り、odrで使用されます。 [basic.def.odr]で。 編集:どうやらこれは間違った部分であり、段落全体にさまざまなものの複数の定義が含まれています。これは、クラステンプレートメンバー関数に関連するものである可能性があります。 オーバーロードされていない関数の名前が、評価される可能性のある式または候補関数のセットのメンバーとして表示される場合、評価される可能性のある式から参照されたときにオーバーロード解決によって選択された場合、純粋仮想関数でない限り、odrが使用されます。関数とその名前は明示的に修飾されていません。 しかし、このルールが複数のコンパイルユニットでどのように機能するのかわかりません。クラステンプレートを明示的にインスタンス化すると、すべてのメンバー関数がインスタンス化されますか?

4
末尾の戻り値の型の構文スタイルを新しいC ++ 11プログラムのデフォルトにする必要がありますか?[閉まっている]
クローズ。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 3年前に閉鎖されました。 この質問を改善する C ++ 11は、新しい関数構文をサポートしています。 auto func_name(int x, int y) -> int; 現在、この関数は次のように宣言されます。 int func_name(int x, int y); 新しいスタイルはまだ広く採用されていないようです(gcc stlで言う) ただし、この新しいスタイルは、新しいC ++ 11プログラムのどこでも優先する必要がありますか、それとも必要な場合にのみ使用しますか? 個人的には、可能な限り古いスタイルを好みますが、スタイルが混在するコードベースはかなり醜いように見えます。

3
std :: ref(T)とT&のC ++の違い?
このプログラムに関していくつか質問があります。 #include <iostream> #include <type_traits> #include <functional> using namespace std; template <typename T> void foo ( T x ) { auto r=ref(x); cout<<boolalpha; cout<<is_same<T&,decltype(r)>::value; } int main() { int x=5; foo (x); return 0; } 出力は次のとおりです。 false std::refオブジェクトの参照が返されない場合、それは何をするのか知りたいのですが。基本的に、次の違いは何ですか。 T x; auto r = ref(x); そして T x; T &y = …
92 c++  reference  ref 




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