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

このタグは、C ++ 11としてコンパイルする必要があるコードに使用します(C ++ 14以降で導入された機能は使用しません)。

1
acoslはstd名前空間にありませんか?
cppreferenceによると、関数acoslはstd名前空間にある必要があります:https : //en.cppreference.com/w/cpp/numeric/math/acos ただし、gcc(またはclang)では、以下のコードはコンパイルされません。 #include <cmath> int main() { long double var = std::acosl(4.0); return 0; } 次のエラーメッセージが表示されます。 gay@latitude-7490:~$ g++ -std=c++11 test.cpp test.cpp: In function 'int main()': test.cpp:5:26: error: 'acosl' is not a member of 'std'; did you mean 'acosh'? 5 | long double truc = std::acosl( (long double)4.0); | …
8 c++  c++11 

7
C ++で再帰的に整数のテンプレートパラメーターを一致させることは可能ですか?
次の問題があります。N次元ベクトルを次のように定義します #include <vector> #include <utility> #include <string> template <int N, typename T> struct NVector{ typedef std::vector<typename NVector<N-1,T>::type> type; }; template <typename T> struct NVector<1,T> { typedef std::vector<T> type; }; ネストされたベクトルのリーフ要素をいくら深くても変換でき、同じ形状の新しいネストされたベクトルを返す、より高次の関数マップを書きたいと思います。私が試してみました template <int N, typename T, typename Mapper> struct MapResult { typedef decltype ( (std::declval<Mapper>()) (std::declval<T>()) ) basic_type; typedef typename NVector<N, …

5
assert()とstatic_assert()の間でディスパッチする方法、constexprコンテキストに依存するか?
C ++ 11 constexpr関数では、anなどの2番目のステートメントassert()は使用できません。A static_assert()は問題ありませんが、関数が「通常の」関数として呼び出された場合は機能しません。カンマ演算子はwrtoを助けるために来るかもしれません。assert()しかし、醜いですし、いくつかのツールは、それについての警告を吐きます。 アサーションのほかに完全に制約可能な「ゲッター」を検討してください。しかし、実行時とコンパイル時に何らかのアサーションを保持したいのですが、 'constexpr'コンテキストによってはオーバーロードすることはできません。 template<int Size> struct Array { int m_vals[Size]; constexpr const int& getElement( int idx ) const { ASSERT( idx < Size ); // a no-go for constexpr funcs in c++11 // not possible, even in constexpr calls as being pointed out, but what I …

1
Swig C ++:インターフェースベクター<クラスオブジェクト*>
基本的に私はPythonで値の異なるデータ型の辞書(float / int / bool / char / list)を含むタプル/リストを作ろうとしています。 私はこれを次のコードから取得しています: (&lt;f_p.Bunch; proxy of &lt;Swig Object of type 'Bunch *' at 0x7f4954bdde10&gt; &gt;, &lt;f_p.Bunch; proxy of &lt;Swig Object of type 'Bunch *' at 0x7f4954bdde40&gt; &gt;, &lt;f_p.Bunch; proxy of &lt;Swig Object of type 'Bunch *' at 0x7f495668be70&gt; &gt;, &lt;f_p.Bunch; proxy of &lt;Swig …
8 c++  c++11  c++14  swig 

1
アトミックタイプのベクトルを割り当てる方法は?
どうすれば、原子の型を持つベクトルのメンバーを割り当てることができますか? #include &lt;iostream&gt; #include &lt;thread&gt; #include &lt;vector&gt; using namespace std; int main() { vector&lt;atomic&lt;bool&gt;&gt; myvector; int N=8; myvector.assign(N,false); cout&lt;&lt;"done!"&lt;&lt;endl; } https://wandbox.org/permlink/lchfOvqyL3YKNivk prog.cc: In function 'int main()': prog.cc:11:28: error: no matching function for call to 'std::vector&lt;std::atomic&lt;bool&gt; &gt;::assign(int&amp;, bool)' 11 | myvector.assign(N,false); | ^

3
現在のテンプレートをテンプレートパラメータの1つに対するテンプレートパラメータとして使用する
一般的なグラフ構造を作成しようとしていますが、頂点とエッジの間の循環依存関係に遭遇しています。私はVertexクラスとEdgeクラスを次のように定義します。 template&lt;typename EdgeType&gt; struct Vertex { std::vector&lt;EdgeType&gt; successors; }; template&lt;typename EdgeCostType, typename VertexWrapper&gt; struct Edge { EdgeCostType cost; VertexWrapper source; VertexWrapper dest; }; のようなものでインスタンス化したいのですがVertex&lt;Edge&lt;int, std::shared_ptr&lt;decltype(v)&gt;&gt;&gt; v;、明らかにできません。この循環依存関係を解決するにはどうすればよいですか? 編集: この問題の要約は、現在のテンプレートを現在のテンプレートのテンプレートパラメータの1つに対するテンプレートパラメータとして使用することです。 template&lt;typename VertexWrapper&gt; struct Vertex { std::vector&lt;pair&lt;int, VertexWrapper&lt;Vertex&gt;&gt;&gt; successors; };

1
時間テキストをコンパイルして数値変換する(atoi)
コンパイル時にatoi()関数を実装したい(C ++ 11またはC ++ 14標準を使用して、C ++言語で)。したがって、二重引用符で囲まれたテキストを数値として解析したり、エラーを再現したりできます。より具体的には、それはコンパイル時にprintfのような形式を解析できるより大きなシステムの一部です。そして、私は単語のフォーマット文字列を分割し、特定の単語を数字で表すことができる場合は、文字列ではなく番号を出力します(シーンの背後にあるシリアライザクラスは、文字列よりも数値をより効率的にシリアル化できます。重要なのは、デシリアライザはすべての文字列を数値として解析しようとしないことです。これは、フォーマット文字列内に出力されるすべての数値は常に数値として表現され、文字列としては表現されないためです...) 私が2つ知っているように、タスクを解決するには2つの方法があります。 1)constexpr関数を使用する。 2)テンプレートのメタプログラミング。 どっちがいいの?私は最初の方法を試しましたが、この方法には多くの障害があることがわかります。特に、c ++ 11に関連するいくつかの制限があります。2番目のように見えるかもしれませんが、いくつかのトリックが必要です(c ++ 14から始まるgccおよびc ++ 11から始まるclangでサポートされている、演算子 ""を使用して文字列を分割して文字を分離する必要があります。 )。また、完全にTMPに基づくソリューションは、大きすぎて複雑すぎます。 以下は私の解決策です、私はそれについていくつかの提案を聞いてうれしいです。 http://coliru.stacked-crooked.com/a/0b8f1fae9d9b714b #include &lt;stdio.h&gt; template &lt;typename T&gt; struct Result { T value; bool valid; constexpr Result(T v) : value(v), valid(true) {} constexpr Result() : value(), valid(false) {} }; template &lt;typename T&gt; constexpr …

3
ソートされたベクトルに、特定の値に加算されるペアがあるかどうかを線形時間で調べます
std::vector昇順で並べ替えられた個別の要素を考慮して、合計が特定の値であるコレクションに2つの要素があるかどうかを判断するアルゴリズムを開発したいと思いますsum。 私はそれぞれのトレードオフで2つの異なるアプローチを試しました: ベクトル全体をスキャンし、ベクトルの各要素std::lower_boundに対してsum、現在の要素との差に対応する要素を検索するために、ベクトルにバイナリ検索()を適用できます。これは、追加のスペースを必要としないO(n log n)時間ソリューションです。 ベクトル全体をトラバースしてにデータを入力できstd::unordered_setます。次に、ベクトルをスキャンし、各要素std::unordered_setについて、とsum現在の要素の違いを調べます。ハッシュテーブルの検索は平均して一定の時間で実行されるため、このソリューションは線形時間で実行されます。ただし、このソリューションでは、std::unordered_setデータ構造のために追加の線形スペースが必要です。 それにもかかわらず、線形時間で実行され、追加の線形スペースを必要としないソリューションを探しています。何か案は?スピードとスペースのトレードオフを強いられているようです。
8 c++  algorithm  c++11  search  stl 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.