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

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




5
CMakeファイルにリンカーまたはコンパイルフラグを追加するにはどうすればよいですか?
arm-linux-androideabi-g++コンパイラを使用しています。簡単な「Hello、World!」をコンパイルしようとすると うまくコンパイルするプログラム。そのコードに単純な例外処理を追加してテストすると、それも機能します(追加した後-fexceptionsは、デフォルトで無効になっていると思います)。 これはAndroidデバイス用であり、CMakeのみを使用し、は使用しませんndk-build。 例えば ​​- first.cpp #include <iostream> using namespace std; int main() { try { } catch (...) { } return 0; } ./arm-linux-androideadi-g++ -o first-test first.cpp -fexceptions 問題なく動作します... 問題 ... CMakeファイルでファイルをコンパイルしようとしています。 -fexceptionsフラグとして追加したい。私が試した set (CMAKE_EXE_LINKER_FLAGS -fexceptions ) or set (CMAKE_EXE_LINKER_FLAGS "fexceptions" ) そして set ( CMAKE_C_FLAGS "fexceptions") それでもエラーが表示されます。
220 c++  cmake 

4
派生クラスでオーバーライドされた関数が基本クラスの他のオーバーロードを隠すのはなぜですか?
コードを考えてみましょう: #include <stdio.h> class Base { public: virtual void gogo(int a){ printf(" Base :: gogo (int) \n"); }; virtual void gogo(int* a){ printf(" Base :: gogo (int*) \n"); }; }; class Derived : public Base{ public: virtual void gogo(int* a){ printf(" Derived :: gogo (int*) \n"); }; }; int main(){ …

14
C ++ 11のautoキーワードでは多すぎますか?
私はauto、C ++ 11標準で利用できる新しいキーワードを、それが設計されたと考えている複雑なテンプレート型に対して使用しています。しかし、私はそれを次のものにも使用しています: auto foo = std::make_shared<Foo>(); そしてもっと懐疑的に: auto foo = bla(); // where bla() return a shared_ptr<Foo> 私はこのトピックについてあまり議論していません。と思われるautoタイプは、多くの場合、文書化と健全性チェックの形であることから、過剰に使用することができます。使用の際にどこに線を引くautoか、この新機能の推奨される使用例は何ですか? 明確にするために、私は哲学的な意見を求めているのではありません。標準的な委員会によるこのキーワードの意図された使用をお願いします。おそらく、その意図された使用が実際にどのように実現されるかについてのコメントが必要です。 補足:この質問は、SE.Programmersに移動され、Stack Overflowに戻されました。これに関する議論は、このメタ質問にあります。

14
C ++で列挙型を使用する方法
enum次のようなものがあるとします。 enum Days {Saturday, Sunday, Tuesday, Wednesday, Thursday, Friday}; これのインスタンスを作成enumし、適切な値で初期化したいので、次のようにします。 Days day = Days.Saturday; 次に、変数またはインスタンスを既存のenum値で確認したいので、次のようにします。 if (day == Days.Saturday) { std::cout << "Ok its Saturday"; } これは私にコンパイルエラーを与えます: エラー:「。」の前にプライマリ式が必要です トークン 明確にするために、言うことの違いは何ですか? if (day == Days.Saturday) // Causes compilation error そして if (day == Saturday) ? これらの2つは実際には何を指しますか。1つは問題がなく、1つはコンパイルエラーの原因になります。
218 c++  enums 

3
512x512の行列の転置が、513x513の行列の転置よりもはるかに遅いのはなぜですか?
異なるサイズの正方行列でいくつかの実験を行った後、パターンが思い付きました。常に、サイズの行列の転置は、サイズの行列の2^n転置よりも遅くなります2^n+1。の値が小さい場合n、違いは重要ではありません。 ただし、値が512を超えると大きな違いが生じます。(少なくとも私にとっては) 免責事項:要素の二重交換のため、関数が実際に行列を転置しないことは知っていますが、違いはありません。 コードに従います: #define SAMPLES 1000 #define MATSIZE 512 #include <time.h> #include <iostream> int mat[MATSIZE][MATSIZE]; void transpose() { for ( int i = 0 ; i < MATSIZE ; i++ ) for ( int j = 0 ; j < MATSIZE ; j++ ) { int aux = mat[i][j]; …

2
unique_ptrをベクターにpush_backできないのはなぜですか?
このプログラムの何が問題になっていますか? #include <memory> #include <vector> int main() { std::vector<std::unique_ptr<int>> vec; int x(1); std::unique_ptr<int> ptr2x(&x); vec.push_back(ptr2x); //This tiny command has a vicious error. return 0; } エラー: In file included from c:\mingw\bin\../lib/gcc/mingw32/4.5.0/include/c++/mingw32/bits/c++allocator.h:34:0, from c:\mingw\bin\../lib/gcc/mingw32/4.5.0/include/c++/bits/allocator.h:48, from c:\mingw\bin\../lib/gcc/mingw32/4.5.0/include/c++/memory:64, from main.cpp:6: c:\mingw\bin\../lib/gcc/mingw32/4.5.0/include/c++/bits/unique_ptr.h: In member function 'void __gnu_cxx::new_allocator<_Tp>::construct(_Tp*, const _Tp&) [with _Tp = std::unique_ptr<int>, _Tp* …


4
なぜこのifステートメントと代入および等式チェックの組み合わせがtrueを返すのですか?
私はいくつかの初心者の間違いを考えていました、そして私はif声明にあるもので終わりました。私はコードをこれに少し拡張しました: int i = 0; if (i = 1 && i == 0) { std::cout << i; } 私はそれが見てきたif文はtrueを返し、それはcout「S iのように1。場合はi割り当てられている1if文で、なぜやりましたi == 0戻りますかtrue?
216 c++  if-statement 

3
関数ポインターの定義がアンパサンド「&」またはアスタリスク「*」をいくつ使用しても機能するのはなぜですか?
なぜ次のように機能するのですか? void foo() { cout << "Foo to you too!\n"; }; int main() { void (*p1_foo)() = foo; void (*p2_foo)() = *foo; void (*p3_foo)() = &foo; void (*p4_foo)() = *&foo; void (*p5_foo)() = &*foo; void (*p6_foo)() = **foo; void (*p7_foo)() = **********************foo; (*p1_foo)(); (*p2_foo)(); (*p3_foo)(); (*p4_foo)(); (*p5_foo)(); (*p6_foo)(); (*p7_foo)(); }
216 c++  c  function-pointers 

15
C ++のソートとインデックスの追跡
C ++と、できれば標準ライブラリを使用して、サンプルのシーケンスを昇順で並べ替えたいが、新しいサンプルの元のインデックスも覚えておきたい。 たとえば、サンプルのセット、ベクトル、行列がありますA : [5, 2, 1, 4, 3]。これらをに並べ替えたい B : [1,2,3,4,5]が、値の元のインデックスも覚えておきたいので、次のような別のセットを取得できます。-これは C : [2, 1, 4, 3, 0 ]、元の「B」の各要素のインデックスに対応A '。 たとえば、Matlabでは次のことができます。 [a,b]=sort([5, 8, 7]) a = 5 7 8 b = 1 3 2 誰もがこれを行うための良い方法を見ることができますか?
216 c++  sorting  stl  indexing 

6
make_uniqueおよび完全な転送
std::make_unique標準C ++ 11ライブラリに関数テンプレートがないのはなぜですか?見つけた std::unique_ptr<SomeUserDefinedType> p(new SomeUserDefinedType(1, 2, 3)); 少し冗長。次の方がずっといいと思いませんか? auto p = std::make_unique<SomeUserDefinedType>(1, 2, 3); これはnew見事に非表示になり、タイプについては1回だけ言及します。 とにかく、ここに私の実装の試みがありますmake_unique: template<typename T, typename... Args> std::unique_ptr<T> make_unique(Args&&... args) { return std::unique_ptr<T>(new T(std::forward<Args>(args)...)); } std::forwardコンパイルするのにかなり時間がかかりましたが、それが正しいかどうかはわかりません。それは...ですか?正確にはstd::forward<Args>(args)...どういう意味ですか?コンパイラはそれを何で作っていますか?

4
マップを介したC ++ループ
map<string, int>string-intの値やキーを知らずに、の各要素を反復処理したいと思います。 これまでのところ: void output(map<string, int> table) { map<string, int>::iterator it; for (it = table.begin(); it != table.end(); it++) { //How do I access each element? } }
216 c++  dictionary 

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