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

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

7
ペアの2番目の要素に基づいてペアのベクトルをソートするにはどうすればよいですか?
ペアのベクトルがある場合: std::vector<std::pair<int, int> > vec; ペアの2番目の要素に基づいてリストを昇順でソートする簡単な方法はありますか? 私は仕事を行います小さな関数オブジェクトを書くことができます知っているが、既存の部品を使用する方法があるSTLをし、std::less直接作業を行うには? 編集:私は、ソートするために3番目の引数に渡す別の関数またはクラスを作成できることを理解しています。問題は、標準的なものから構築できるかどうかです。私は本当に次のようになります: std::sort(vec.begin(), vec.end(), std::something_magic<int, int, std::less>());
133 c++  stl  stdvector 


12
coutを使用して正しい小数点数を印刷する
float値のリストがあり、cout小数点以下2桁で印刷したいと思います。 例えば: 10.900 should be printed as 10.90 1.000 should be printed as 1.00 122.345 should be printed as 122.34 これどうやってするの? (これでsetprecisionは役に立たないようです。)
133 c++ 

4
どのようにstd :: optionalを使用する必要がありますか?
私はのドキュメントを読んstd::experimental::optionalでいて、それが何をするかについては良い考えを持っていますが、いつ理解するのかわかりませんそれを使用する必要があるのか​​、またはどのように使用するのか。このサイトにはまだ例が含まれていないため、このオブジェクトの真の概念を理解するのは困難です。いつstd::optional使用するのが適切であり、以前の標準(C ++ 11)で見つからなかったものをどのように補正するか。


18
最近のC ++はより一般的になっていますか?[閉まっている]
現在のところ、この質問は、Q&A形式には適していません。事実、参考文献、専門知識によって回答が裏付けられることを期待していますが、この質問は、討論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問が改善され、場合によっては再開できると思われる場合は、ヘルプセンターにアクセスしてください。 7年前休業。 6〜7年前に初めてC ++を学んだとき、私が学んだのは基本的に「クラスを伴うC」でした。std::vector間違いなく上級者向けのトピックであり、本当にやりたいことがあれば学ぶことができます。そして、メモリを管理するためにデストラクタを利用できると誰も私に言っていないことは確かです。今日、どこを見ても、RAIIとSFINAE、STLとBoost、さらにはモダンC ++が見られます。言語を使い始めたばかりの人でも、ほぼ1日目からこれらの概念を教えられているようです。 私の質問は、これは単に「最高」、つまりここやSOや、初心者を惹きつける傾向がある他のプログラミングサイト(gamedev.net)でしか見られないため、またはこれが実際に全体としてのC ++コミュニティ? 最新のC ++は本当にデフォルトになっていますか?専門家が書くいくつかの派手なものではなく、それは「C ++のあり方」になっているのでしょうか?それとも、「クラスを使用したC」を学習しstd::vector、を使用する代わりに独自の動的配列を記述し、トップレベルのコードから手動でnew / deleteを呼び出してメモリ管理を行う何千人もの人々を見ることができないのでしょうか? 私が信じたいのは、C ++コミュニティ全体が基本的に数年で大きく進化したかどうかです。あなたの経験と印象は何ですか? (免責事項:C ++に精通していない人は、C ++が他の言語と比較して人気を得ているかどうかを尋ねるタイトルを誤って解釈する可能性があります。それは私の質問ではありません。「モダンC ++」は、本にちなんで名付けられたC ++内の方言またはプログラミングスタイルの一般的な名前です現代のC ++デザイン:一般的なプログラミングとデザインパターンの適用 "と私はこれだけと"古いC ++ "に興味があります。したがって、C ++の時代が過ぎたことを私に伝える必要はありません。みんなPythonを使用する必要があります;))
132 c++ 

6
C ++:boolが8ビット長なのはなぜですか?
C ++では、ブール型が8ビット長(システム上)であり、ブール値を保持するのに1ビットだけで十分なのはなぜでしょうか。 以前はパフォーマンス上の理由であると信じていましたが、32ビットまたは64ビットのマシンで、レジスターが32ビットまたは64ビット幅である場合、パフォーマンスの利点は何ですか? それとも、これらの「歴史的な」理由の1つにすぎませんか?
132 c++  boolean  size 

25
なぜ誰かがC ++ではなくCを使用するのですか?[閉まっている]
現在のところ、この質問は、Q&A形式には適していません。事実、参考文献、専門知識によって回答が裏付けられることを期待していますが、この質問は、討論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問が改善され、場合によっては再開できると思われる場合は、ヘルプセンターにアクセスしてください。 8年前に閉鎖。 人々はC ++について文句を言うのが好きなようですが、なぜC ++ではなくCを選択するのかについて、多くの証拠を見つけることができませんでした。Cはほぼ同じように不安定にならず、C ++にこれらすべての問題がある場合、なぜCサブセットに制限できないのでしょうか。あなたの考え/経験は何ですか?
132 c++  c 


1
-std = c ++ 11と-std = gnu ++ 11の違いは何ですか?
gccとclangのコンパイルパラメータ-std=c++11との違いは何-std=gnu++11ですか?同じ質問c99とgnu99?私はC ++とC標準について知っています。興味があるのはパラメーターの違いです。 私はそれがいくつかの拡張機能に関係していることをどこかで読んだことがありますが、どれがどれで、どのように新しいプロジェクトでどちらを選択するかははっきりしません。
132 c++  gcc  c++11  clang 

10
CおよびC ++コンパイラーは、強制されないのに関数シグニチャーで配列長を許可するのはなぜですか?
これは私の学習期間中に私が見つけたものです: #include<iostream> using namespace std; int dis(char a[1]) { int length = strlen(a); char c = a[2]; return length; } int main() { char b[4] = "abc"; int c = dis(b); cout << c; return 0; } したがって、変数int dis(char a[1])では、 を使用できるため、[1]は何も実行せず、まったく機能しません。またはのように。配列名はポインタであり、配列を伝達する方法を知っているので、私のパズルはこの部分についてではありません。a[2]int a[]char *a 私が知りたいのは、コンパイラがこの動作を許可する理由です(int a[1])。それとも私が知らない他の意味がありますか?
131 c++  c  arrays 

11
main()は本当にC ++プログラムの始まりですか?
C ++標準のセクション$ 3.6.1 / 1は、 プログラムには、プログラムの指定された開始点であるmainと呼ばれるグローバル関数が含まれます。 今、このコードを考えて、 int square(int i) { return i*i; } int user_main() { for ( int i = 0 ; i < 10 ; ++i ) std::cout << square(i) << endl; return 0; } int main_ret= user_main(); int main() { return main_ret; } このサンプルコードは、私が意図することを実行します。つまり、プログラムの「開始」であるはずの関数に入る前に、0から9の整数の2乗を出力しますmain()。 また-pedantic、GCC 4.5.0オプションでコンパイルしました。エラーも警告もありません! …

4
名前空間stdでテンプレートクラスを転送宣言するにはどうすればよいですか?
#ifndef __TEST__ #define __TEST__ namespace std { template<typename T> class list; } template<typename T> void Pop(std::list<T> * l) { while(!l->empty()) l->pop(); } #endif 私のメインでその関数を使用しました。エラーが発生します。もちろん、私はstd::list(アロケーターだと思う)のテンプレートパラメーターが他にもあることを知っています。しかし、それは要点の外です。転送宣言できるようにするには、テンプレートクラスの完全なテンプレート宣言を知っている必要がありますか? 編集:以前はポインタを使用していませんでした-参照でした。ポインタで試してみます。
131 c++  templates  g++ 


2
リリースモードでは、コードの動作は期待どおりではありません
次のコードは、デバッグモードとリリースモード(Visual Studio 2008を使用)で異なる結果を生成します。 int _tmain(int argc, _TCHAR* argv[]) { for( int i = 0; i < 17; i++ ) { int result = i * 16; if( result > 255 ) { result = 255; } printf("i:%2d, result = %3d\n", i, result) ; } return 0; } デバッグモードの出力。これは予想どおりです。 i: 0, …

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