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

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

4
コピーの省略と戻り値の最適化とは何ですか?
コピーエリクションとは何ですか?(名前付き)戻り値の最適化とは何ですか?彼らは何を意味しますか? どのような状況で発生する可能性がありますか?制限とは何ですか? この質問を参照された場合は、おそらく導入部を探しているでしょう。 技術概要については、標準リファレンスを参照してください。 一般的なケースについては、こちらをご覧ください。


5
C ++関数の静的変数の有効期間はどのくらいですか?
変数がstatic関数のスコープ内で宣言されている場合、変数は1回だけ初期化され、関数呼び出し間でその値を保持します。その寿命は正確には何ですか?コンストラクタとデストラクタはいつ呼び出されますか? void foo() { static string plonk = "When will I die?"; }
373 c++  static  lifetime 

30
C ++での大文字と小文字を区別しない文字列比較[終了]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 2年前休業。 この質問の答えはコミュニティの努力です。この投稿を改善するには、既存の回答を編集してください。現在、新しい回答や相互作用を受け入れていません。 文字列をすべて大文字またはすべて小文字に変換せずに、C ++で大文字と小文字を区別しない文字列比較を行う最良の方法は何ですか? メソッドがUnicodeに対応しているかどうか、および移植性がどの程度かを示してください。
373 c++  string 



12
簡単なキーの場合にunordered_mapよりもmapを使用する利点はありますか?
unordered_mapC ++での最近の話で、ルックアップの効率性(償却済みのO(1)とO(log n))のため、以前に使用unordered_mapしたほとんどの場合に使用する必要があることに気付きました。ほとんどの場合、マップを使用します。または、キータイプとしてまたはを使用します。したがって、ハッシュ関数の定義に問題はありません。考えれば考えるほど、単純なタイプのキーの場合にオーバーを使用する理由が見つからないことに気付きました。インターフェースを調べたところ、何も見つかりませんでした。私のコードに影響を与える重要な違い。mapintstd::stringstd::mapstd::unordered_map そこで質問:使用する任意の本当の理由があるstd::map以上std::unordered_mapのような単純なタイプの場合intとはstd::string? 私は厳密にプログラミングの観点から質問しています。これは完全に標準とは見なされておらず、移植に問題が発生する可能性があることを知っています。 また、正しい答えの1つは、オーバーヘッドが小さいため、「データセットが小さいほど効率的である」と思われます(それは本当ですか)。したがって、質問の量がキーは自明ではありません(> 1 024)。 編集: ああ、私は明白なことを忘れました(GManに感謝します!)-はい、もちろん地図は注文されています-私はそれを知っており、他の理由を探しています。

1
C ++テンプレートtypedef
クラスがあります template<size_t N, size_t M> class Matrix { // .... }; サイズNおよび1のa と同等の(列ベクトル)typedefを作成するa を作成します。そのようなもの:VectorMatrix typedef Matrix<N,1> Vector<N>; コンパイルエラーが発生します。以下は似たようなものを作成しますが、正確には私が望んでいるものではありません。 template <size_t N> class Vector: public Matrix<N,1> { }; 解決策またはそれほど高価ではない回避策/それに対するベストプラクティスはありますか?
369 c++  templates  c++11  typedef 



5
関数からunique_ptrを返す
unique_ptr<T>コピーの構築を許可せず、代わりに移動のセマンティクスをサポートします。それでも、unique_ptr<T>関数からを返し、戻り値を変数に割り当てることができます。 #include <iostream> #include <memory> using namespace std; unique_ptr<int> foo() { unique_ptr<int> p( new int(10) ); return p; // 1 //return move( p ); // 2 } int main() { unique_ptr<int> p = foo(); cout << *p << endl; return 0; } 上記のコードはコンパイルされ、意図したとおりに機能します。では、この行1がコピーコンストラクタを呼び出さず、コンパイラエラーが発生するのはなぜですか。2代わりにlineを使用しなければならなかった場合、それは理にかなっています(lineを使用し2ても機能しますが、そうする必要はありません)。 私はC ++ 0xがこの例外を許可していることを知っています。unique_ptr戻り値は関数が終了するとすぐに破棄され、返されるポインターの一意性を保証する一時的なオブジェクトだからです。これがどのように実装されているのか知りたいのですが、コンパイラーで特別なケースになっているのでしょうか、それとも、これが利用する言語仕様に他の節があるのでしょうか?
367 c++  c++11  unique-ptr 

5
C ++ 11をg ++でコンパイルする
C ++コンパイラをC ++ 11に更新しようとしています。少し検索して、フラグ-std=c++0xまたはを使用する必要があるという結論に達しましたが、フラグ-std=gnu++0xについて多くのことを知りません。誰か助けてもらえますか?(私はUbuntu 12.04を使用しています。) これは、C ++ 11に含まれているライブラリ(つまり、配列)を使用しようとするとコンパイラーから発生するエラーです。 #include <array> #include <iostream> int main() { std::array<int, 3> arr = {2, 3, 5}; ... } このファイルには、今後のISO C ++標準であるC ++ 0xのコンパイラとライブラリのサポートが必要です。このサポートは現在実験段階であり、-std = c ++ 0xまたは-std = gnu ++ 0xコンパイラオプションで有効にする必要があります。
367 c++  c++11  g++  flags 

9
C ++文字列==とcompare()の違いは?
使用に関するいくつかの推奨事項を読みました std::string s = get_string(); std::string t = another_string(); if( !s.compare(t) ) { の代わりに if( s == t ) { 私は慣れているし、自然で読みやすいので、ほとんど常に最後のものを使用しています。別の比較関数があることさえ知りませんでした。より正確には、==はcompare()を呼び出すと考えました。 違いは何ですか?どちらの方法でもう一方の方法を優先する必要がありますか? 文字列が別の文字列と同じ値であるかどうかを知る必要がある場合のみを検討しています。
363 c++  string 

16
文字列区切り文字を使用してC ++で文字列を解析(分割)(標準C ++)
以下を使用してC ++で文字列を解析しています。 using namespace std; string parsed,input="text to be parsed"; stringstream input_stringstream(input); if (getline(input_stringstream,parsed,' ')) { // do some processing. } 単一の文字区切り文字を使用した解析は問題ありません。しかし、区切り文字として文字列を使用したい場合はどうでしょうか。 例:分割したい: scott>=tiger >=区切り文字として、私はスコットと虎を得ることができるように。
362 c++  parsing  split  token  tokenize 


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