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

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

10
QStringからchar *への変換
次の方法でQStringをchar *型に変換しようとしましたが、動作しないようです。 //QLineEdit *line=new QLineEdit();{just to describe what is line here} QString temp=line->text(); char *str=(char *)malloc(10); QByteArray ba=temp.toLatin1(); strcpy(str,ba.data()); この方法で起こりうる欠陥を詳しく説明できますか、それとも別の方法を提供できますか?
94 c++  qt  qstring  qtcore 

7
「uint32_t」識別子が見つかりませんエラー
Linux CからVisual C ++ for Windowsにコードを移植しています。 Visual C ++にはわからない#include <stdint.h>のでコメントにしました。 後で、それらの'uint32_t': identifier not foundエラーの多くを見つけました。どうすれば解決できますか?
94 c++  c  visual-c++ 

2
boost :: hash_combineのマジックナンバー
boost::hash_combineテンプレート関数は、ハッシュ(と呼ばれる参照取りseed)及びオブジェクトv。docsによると、それseedはvby のハッシュと結合します seed ^= hash_value(v) + 0x9e3779b9 + (seed << 6) + (seed >> 2); これは決定論的であることがわかります。XORが使用される理由がわかります。 追加は、類似した値を広く分離してマッピングするのに役立つので、ハッシュテーブルをプローブしても問題が発生しないと思いますが、誰かが魔法の定数を説明できますか?

4
値またはC ++での参照によって関数にベクトルが渡される
私はC ++でコーディングしています。関数がvoid foo(vector<int> test)あり、それをプログラムで呼び出す場合、ベクトルは値または参照で渡されますか?ベクトルと配列が似ており、関数like void bar(int test[])が値ではなく参照(ポインタ?)でテストに合格することを知っているので、確信が持てません。私の推測では、値による受け渡しを避けたい場合は、ポインター/参照によって明示的にベクトルを渡す必要がありますが、確信が持てません。
94 c++  arrays  vector 

6
コンパイル時のC文字列の長さの計算。これは本当にconstexprですか?
コンパイル時に文字列リテラルの長さを計算しようとしています。これを行うには、次のコードを使用しています。 #include <cstdio> int constexpr length(const char* str) { return *str ? 1 + length(str + 1) : 0; } int main() { printf("%d %d", length("abcd"), length("abcdefgh")); } すべてが期待どおりに機能し、プログラムは4と8を出力します。clangによって生成されたアセンブリコードは、結果がコンパイル時に計算されることを示しています。 0x100000f5e: leaq 0x35(%rip), %rdi ; "%d %d" 0x100000f65: movl $0x4, %esi 0x100000f6a: movl $0x8, %edx 0x100000f6f: xorl %eax, %eax 0x100000f71: callq …

2
std :: setのstd :: back_inserter?
これは簡単な質問だと思います。私はこのようなことをする必要があります: std::set<int> s1, s2; s1 = getAnExcitingSet(); std::transform(s1.begin(), s1.end(), std::back_inserter(s2), ExcitingUnaryFunctor()); もちろん、std::back_inserterがないため機能しませんpush_back。 std::inserterイテレータも必要ですか?使っstd::inserterたことがないのでどうすればいいかわかりません。 誰かがアイデアを持っていますか? もちろん、私のもう1つのオプションは、のベクトルを使用して、s2後でそれを並べ替えることです。多分それは良いですか?
94 c++  algorithm  stl 


7
M_PIはmath.hで機能しますが、Visual Studioのcmathでは機能しません
私はVisual Studio 2010を使用しています。C++では、を使用する<cmath>よりもを使用する方がよいと読みました<math.h>。 しかし、私が書こうとしているプログラム(Win32コンソールアプリケーション、空のプロジェクト)では、次のように書いています。 #define _USE_MATH_DEFINES #include <math.h> それはコンパイルしますが、私が書いた場合 #define _USE_MATH_DEFINES #include <cmath> それは失敗する エラーC2065: 'M_PI':宣言されていない識別子 それは正常ですか?cmathとmath.hのどちらを使用しても問題ありませんか?はいの場合、どのようにcmathで動作させることができますか? 更新:GUIで_USE_MATH_DEFINESを定義すると、機能します。なぜこれが起こっているのか手がかりはありますか?

14
C ++プログラムに時限遅延をどのように追加しますか?
私はC ++プログラムに時限遅延を追加しようとしていますが、私が試すことができることや私が見ることができる情報について誰かが何か提案があるかどうか疑問に思っていましたか? この時限遅延をどのように実装するかについてもっと詳しく知りたいのですが、時限遅延を追加する方法についてもっと情報が得られるまで、これをどのように実装しようとすればよいかわかりません。
94 c++  time 


8
実装定義の動作を回避する効率的な符号なしから符号付きのキャスト
unsigned intas引数を取り、intUINT_MAX +1を法とする合同を引数に返す関数を定義したいと思います。 最初の試みは次のようになります。 int unsigned_to_signed(unsigned n) { return static_cast<int>(n); } しかし、言語弁護士なら誰でも知っているように、INT_MAXより大きい値の符号なしから符号付きへのキャストは、実装によって定義されます。 (a)仕様で義務付けられている動作のみに依存するようにこれを実装したいと思います。(b)最新のマシンおよび最適化コンパイラでno-opにコンパイルされます。 奇妙なマシンに関しては... unsignedintに対してUINT_MAX + 1を法とするsignedint合同がない場合、例外をスローしたいとしましょう。複数ある場合(これが可能かどうかはわかりません)、最大のものが必要だとしましょう。 OK、2回目の試行: int unsigned_to_signed(unsigned n) { int int_n = static_cast<int>(n); if (n == static_cast<unsigned>(int_n)) return int_n; // else do something long and complicated } 私の謙虚な意見ではありそうもないので、私が典型的な2の補数システムを使用していないときは、効率についてはあまり気にしません。そして、私のコードが2050年の遍在する符号と大きさのシステムのボトルネックになった場合、誰かがそれを理解して最適化できるに違いありません。 さて、この2回目の試みは、私が望むものにかなり近いものです。キャスト先intは一部の入力に対して実装定義ですが、キャストバック先unsignedはUINT_MAX +1を法とする値を保持するために標準によって保証されています。したがって、条件付きは私が望むものを正確にチェックし、私が遭遇する可能性のあるどのシステムでもコンパイルされません。 ただし...int実装定義の動作を呼び出すかどうかを最初に確認せずに、まだキャストしています。2050年のいくつかの架空のシステムでは、誰が何を知っているかを実行できます。だから私はそれを避けたいとしましょう。 質問:私の「3回目の試み」はどのように見えるべきですか? 要約すると、私はしたい: unsignedintからsignedintにキャストします 値modUINT_MAX +1を保持します 標準で義務付けられている動作のみを呼び出す …

6
アクティブな例外なしで呼び出されたC ++終了
スレッドでC ++エラーが発生します: terminate called without an active exception Aborted コードは次のとおりです。 #include <queue> #include <thread> #include <mutex> #include <condition_variable> template<typename TYPE> class blocking_stream { public: blocking_stream(size_t max_buffer_size_) : max_buffer_size(max_buffer_size_) { } //PUSH data into the buffer blocking_stream &operator<<(TYPE &other) { std::unique_lock<std::mutex> mtx_lock(mtx); while(buffer.size()>=max_buffer_size) stop_if_full.wait(mtx_lock); buffer.push(std::move(other)); mtx_lock.unlock(); stop_if_empty.notify_one(); return *this; } //POP …

15
C ++ 11にはC#スタイルのプロパティがありますか?
C#には、ゲッターとセッターを持つフィールド用の素晴らしい構文シュガーがあります。さらに、私は私が書くことを可能にする自動実装されたプロパティが好きです public Foo foo { get; private set; } C ++では私は書く必要があります private: Foo foo; public: Foo getFoo() { return foo; } C ++ 11にはそのような概念があり、これに構文糖を付けることができますか?
93 c#  c++  class  c++11 



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