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

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

26
ソートされた配列を処理する方が、ソートされていない配列を処理するよりも速いのはなぜですか?
OverаэтотвопросестьответынаStack Overflowнарусском:Почемуотсортированныймассивобрабатов、еессененеренененеререненееетсябыстре 以下は、非常に奇妙な動作を示すC ++コードの一部です。奇妙な理由で、データを奇妙にソートすると、コードがほぼ6倍速くなります。 #include <algorithm> #include <ctime> #include <iostream> int main() { // Generate data const unsigned arraySize = 32768; int data[arraySize]; for (unsigned c = 0; c < arraySize; ++c) data[c] = std::rand() % 256; // !!! With this, the next loop runs faster. std::sort(data, data + arraySize); …

22
C ++の「->」演算子とは何ですか?
StackаэтотвопросестьответынаStack Overflowнарусском:Чтотакоеоператор "->"вС++? 読んだ後に隠された機能とCのダークコーナー++ / STLのをcomp.lang.c++.moderated、私は完全に次のコードがコンパイルおよびVisual Studio 2008とG ++ 4.4の両方で働いていたことに驚きました。 コードは次のとおりです。 #include <stdio.h> int main() { int x = 10; while (x --> 0) // x goes to 0 { printf("%d ", x); } } 出力: 9 8 7 6 5 4 3 2 1 0 GCCでも動作するので、これはCだと思います。これは規格のどこに定義されており、どこから来たのですか?

1
Definitive C ++ Bookガイドとリスト
この質問の答えはコミュニティの努力です。この投稿を改善するには、既存の回答を編集してください。現在、新しい回答や相互作用を受け入れていません。 OverаэтотвопросестьответынаStack Overflowнарусском:КнигииучебныересурсыпоС++ この質問は、毎年発行されている数十の悪いC ++の本の中からいくつかの真珠を集めようとしています。 他の多くのプログラミング言語は、インターネットで見つけられるチュートリアルから頻繁に取り上げられますが、よく書かれたC ++の本を勉強せずにすばやくC ++を取り上げることができるものはほとんどありません。これを行うには大きすぎて複雑です。実際、それは非常に大きく複雑なので、非常に多くの非常に悪いC ++の本が世に出ています。そして、私たちは悪いスタイルについて話しているのではなく、明らかに明白な事実上のエラーをスポーツすることや、非常に悪い悪いプログラミングスタイルを促進することなどです。 承認された回答を編集して、高品質の本とおおよそのスキルレベルを提供してください。できれば 、C ++チャットルームでの追加について話し合った後で行って ください。(常連が推薦に同意しない場合、常連は無慈悲にあなたの仕事を取り消すかもしれません。)あなたが個人的に読んだ/恩恵を受けた各本についての短い宣伝文/説明を追加してください。品質、見出しなどを自由に議論してください。基準を満たす書籍がリストに追加されます。CおよびC ++ユーザー協会(ACCU)によるレビューがある書籍には、レビューへのリンクがあります。 *注意:FAQおよびその他のリソースは、C ++タグ情報および以下にあります。c ++-よくある質問。
4243 c++  c++-faq 


30
文字列の単語を反復するにはどうすればよいですか?
文字列の単語を反復処理しようとしています。 文字列は、空白で区切られた単語で構成されていると想定できます。 C文字列関数やその種の文字操作/アクセスには興味がないことに注意してください。また、効率よりも優雅さを優先して回答してください。 私が今持っている最善の解決策は: #include <iostream> #include <sstream> #include <string> using namespace std; int main() { string s = "Somewhere down the road"; istringstream iss(s); do { string subs; iss >> subs; cout << "Substring: " << subs << endl; } while (iss); } これを行うためのよりエレガントな方法はありますか?
2986 c++  string  split 

30
なぜ「ネームスペースstdを使用する」のですか?悪い習慣と考えていますか?
私は書くことを他人に言われてきたusing namespace std;コードでは間違っている、と私は使うべきであるとstd::coutし、std::cin代わりに直接。 なぜusing namespace std;悪い習慣と見なされますか?非効率的ですか、あいまいな変数(std名前空間内の関数と同じ名前を共有する変数)を宣言するリスクがありますか?パフォーマンスに影響しますか?




10
要素ごとの加算が、結合されたループよりも個別のループではるかに速いのはなぜですか?
仮定a1、b1、c1、およびd1ヒープメモリと私の数値コードのポイントは、以下のコアループを有しています。 const int n = 100000; for (int j = 0; j < n; j++) { a1[j] += b1[j]; c1[j] += d1[j]; } このループは、別の外部forループを介して10,000回実行されます。スピードアップするために、コードを次のように変更しました。 for (int j = 0; j < n; j++) { a1[j] += b1[j]; } for (int j = 0; j < n; j++) { c1[j] += …


7
演算子のオーバーロードの基本的なルールとイディオムは何ですか?
注:回答は特定の順序で与えられましたが、多くのユーザーは、与えられた時間ではなく投票に従って回答を並べ替えるため、最も意味のある順序で回答のインデックスを次に示します。 C ++での演算子のオーバーロードの一般的な構文 C ++での演算子オーバーロードの3つの基本ルール 会員と非会員の決定 オーバーロードする一般的な演算子 代入演算子 入出力演算子 関数呼び出し演算子 比較演算子 算術演算子 配列の添え字 ポインタのような型の演算子 変換演算子 新規および削除のオーバーロード (注:これは、Stack OverflowのC ++ FAQへのエントリになることを目的としています。このフォームでFAQを提供するという考えを批評したい場合は、これをすべて開始したメタへの投稿がそのための場所になります。回答その質問は、C ++チャットルームで監視されます。ここでは、FAQのアイデアが最初から始まっているため、アイデアを思いついた人があなたの答えを読む可能性が非常に高くなります。

5
コピーアンドスワップイディオムとは何ですか?
このイディオムとは何ですか?いつ使用する必要がありますか?どの問題を解決しますか?C ++ 11を使用するとイディオムは変わりますか? 多くの場所で言及されていますが、「それは何か」という単一の質問と回答はありませんでした。これは以前に言及された場所の部分的なリストです: 好きなC ++コーディングスタイルのイディオムは何ですか:コピースワップ C ++でのコンストラクターと=演算子のオーバーロードのコピー:一般的な関数は可能ですか? コピーエリクションとは何か、そしてそれがコピーアンドスワップイディオムをどのように最適化するか C ++:オブジェクトの配列を動的に割り当てる?

8
C ++ 11は、標準化されたメモリモデルを導入しました。どういう意味ですか?そして、それはC ++プログラミングにどのように影響しますか?
C ++ 11は標準化されたメモリモデルを導入しましたが、それは正確にはどういう意味ですか?そして、それはC ++プログラミングにどのように影響しますか? この記事(Herb Sutterを引用しているGavin Clarkeによる)は、 メモリモデルとは、C ++コードに、だれがコンパイラを作成したか、どのプラットフォームで実行しているかに関係なく、標準ライブラリが呼び出されるようになったことを意味します。さまざまなスレッドがプロセッサのメモリと通信する方法を制御する標準的な方法があります。 「標準にある異なるコア間で[コード]を分割することについて話しているときは、メモリモデルについて話している。人々がコードで行う次の仮定を破ることなく、メモリモデルを最適化する」とSutterは述べた。 まあ、私はこれとオンラインで利用可能な同様の段落を覚えることができます(私は誕生時から自分の記憶モデルを持っているので:P)。他の人からの質問への回答として投稿することもできますが、正直なところ、私は正確に理解できませんこの。 C ++プログラマーは以前にもマルチスレッドアプリケーションを開発していたのですが、POSIXスレッド、Windowsスレッド、C ++ 11スレッドのどれが重要なのでしょうか。メリットは何ですか?低レベルの詳細を理解したいと思います。 また、C ++ 11のメモリモデルは、C ++ 11のマルチスレッドサポートに何らかの形で関連していると感じています。もしそうなら、正確にはどうですか?なぜそれらを関連付ける必要があるのですか? マルチスレッドの内部がどのように機能するのか、および一般的にメモリモデルが何を意味するのかわからないので、これらの概念を理解してください。:-)

10
C ++では、stdinからの行の読み取りがPythonよりもはるかに遅いのはなぜですか?
PythonとC ++を使用してstdinから文字列入力の行を読み取ることを比較したかったのですが、私のC ++コードが同等のPythonコードよりも桁違いに実行されるのを見てショックを受けました。私のC ++はさびており、私はまだPythonのエキスパートではないので、何か間違っているのか、何かを誤解しているのかどうか教えてください。 (TLDR回答:ステートメントを含める:cin.sync_with_stdio(false)またはfgets代わりに使用してください。 TLDRの結果:質問の一番下までスクロールして、表を見てください。) C ++コード: #include <iostream> #include <time.h> using namespace std; int main() { string input_line; long line_count = 0; time_t start = time(NULL); int sec; int lps; while (cin) { getline(cin, input_line); if (!cin.eof()) line_count++; }; sec = (int) time(NULL) - start; cerr << "Read …

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