問題タブ [c++-standard-library]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - XCode 4、Armadillo、および XCode 標準ライブラリ
XCode 4 で armadillo を使用する (非常に基本的な) プログラムをコンパイルしようとしていますが、armadillo のコンパイルに問題があります。
単純な makefile と clang++ だけを実行すると、問題なくコンパイルされますが、XCode を使用すると、深刻な問題が発生しているようで、あらゆる種類のエラーと警告が表示されます (XCode なしでビルドすると、-Werrors を使用しても、何も得られず、クリーンにビルドされます)。
エラーの一部を次に示します。
など。それらのほとんどは、標準ライブラリにない関数に関連していると思います...XCodeは、別のまたは不完全な標準ライブラリを使用していますか? そして、どうすればそれを変更できますか。
私は本当に XCode デバッガーを使いたいだけです。コードが実行されていないときに作業が簡単になります。また、グラフィカルなプロファイラーもあると便利です。
android - Android std および stl のサポート
私はアンドロイドndkで遊んでいます。cygwin (最新バージョン) で Window Vista を使用しています。携帯電話で hello world jni サンプルをコンパイルして起動しました。それは働いています。コードは (.cpp ファイルです):
少し遊んでみるために、いくつかの変更を追加したかったのです。
そして、上記の関数で、次を追加しました:
しかし、コンパイラは、ファイル「アルゴリズム」が見つからず、min() が std の一部ではないことを示しています。
少し検索した後、Android ndk には、必要なすべての std ファイルを含む gnu-libstdc++ ディレクトリがあることがわかりました。NDK ドキュメントを読んで、usint std::* はコードを変更しなくても機能するはずであることを知りました (適切なヘッダー ファイルが含まれている場合)。しかし、cygwin の gcc は必要なファイルを見つけることができないようです。
Android ndk アプリの .cpp ファイル内で std と stl を使用できるようにするために行う手順は何ですか?
c++ - コンパイラ固有のプロキシに依存する C++11 ライブラリ機能
ある種のコンパイラ マジック (TM) に依存する特定の C++11 機能があることに、試行錯誤の結果、私の注意が向けられました。私は独自の標準準拠 stdlib の実装をいじっています。stdlib の実装がすぐに利用できることは知っていますが、これは小さなアプリケーション用の私自身のバージョンです。
昨夜std::initializer_list
、私は仕様に従って実装しましたが、うまく機能させることができませんでした。高低の答えを探しましたが、それは不可能であり、コンパイラ自体に変更が必要であるという声明が残っていました. さて、私はそれの現在の実装を見てみることにしましたlibstdc++
、そして確かに私の実装はデザインがまったく同じで、端がわずかに異なっているだけでした.のものと同じデザインlibstdc++
です。名前空間 std にある必要があることに気付くまでに 6 時間かかりました。実装は、可能にするコンパイラへのプロキシであることが判明し、コンパイラ自体がクラスをinitializer_list
検索しますinitializer_list
namespace std
.
私の質問は、ある種の特別なコンパイラ マジックが機能すること、隠されたプロキシ接続を必要とすること、または新しい C++11 ライブラリ機能のいずれかのコンパイラ イントリスティックを秘密にすることを認識する必要がある他のライブラリ機能がもうないことです。これらを事前に知りたいので、コンパイラの魔法に依存する他の機能を実装するときに備えて、試行錯誤でそれを理解するために丸一日を無駄にするのではなく; これは退屈でかなり面倒になる可能性があります。
ありがとう。
exception - 例外を有効にする必要がある C++11 標準ライブラリ インターフェイスのリストはありますか?
c++11 ドラフトのリビジョン N3242 を読むと、標準ライブラリのインターフェイスの一部のコンポーネント (特にスレッド化とロック) が例外処理に依存しているようです。
私は例外を無効にして多くの作業を行っているため、例外処理を有効にしないと (実際的または論理的に) 使用できないライブラリ コンポーネント/機能はどれでしょうか?
c++ - 「STL」と「C++ 標準ライブラリ」の間に明確な分離定義はありますか?
重複の可能性:
この STL と「C++ 標準ライブラリ」の戦いとは何ですか?
私はSTL (「標準テンプレート ライブラリ」)という用語に非常に慣れており、実際にC++ 標準ライブラリを意味するときによく使用していることに気づきました。したがって、C++(-11) 標準ライブラリのほとんどすべてが最近のテンプレートであるため、C++Standard-Lib に STL とそうでないものの定義はあるのでしょうか? コンテナ、ストリーム、アルゴリズムなどでしょうか?
それとも、「STL」という用語の使用をやめるべきですか? SGI (正しい?) が何年も前に lib に使用した歴史的なものだからですか? 難しいでしょう...
c++ - Gnu C++ マクロ __cplusplus 標準準拠?
Gnu C++ コンパイラは、次のように定義__cplusplus
しているようです。1
これは、 gcc 4.3.4および gcc 4.7.0 を1
使用して、標準の c++ モードおよび C++0x モードでgcc を使用して出力します。
C++11 FDIS は、「16.8 定義済みマクロ名 [cpp.predefined]」で次のように述べています。
この名前は、C++ 翻訳単位のコンパイル時に値 201103L
__cplusplus
に定義されます。(脚注: この標準の将来のバージョンでは、このマクロの値をより大きな値に置き換える予定です。準拠していないコンパイラは、最大 5 桁の値を使用する必要があります。)
古い std C++03 にも同様のルールがありました。
1
「非準拠」であるため、GCCは意図的にこれをに設定していますか?
__cplusplus
そのリストを読んで、C++11 が有効なコンパイラを使用している場合、ポータブルな方法でチェックインできると思いました。しかし、g++ ではこれは機能しないようです。マクロについては知っていますが、 g++がこのように定義している...EXPERIMENTAL...
理由に興味がありました。__cplusplus
私の最初の問題は、異なる null-pointer-variants 間の切り替えでした。このようなもの:
そのようなスイッチを実装するためのシンプルで適度に移植可能な方法はありますか?
c++ - c++: コンストラクターで std::pair のメンバーを初期化する方法
私は次のクラスを持っています:
コンストラクターでペアのソケットを初期化するにはどうすればよいですか? 以下はコンパイルされません。
編集:ここにコンパイラエラーがあります。楽しみ:
c++ - std::vectorコンストラクターの動作
次のコードを取ります。
このコードはlibstdc++ではコンパイルされません。ただし、VisualStudioのC++ライブラリでコンパイルされます。私が期待する動作はv
、サイズ10の10個のベクトルで満たされていることです。これは、VisualStudioで得られるものです。
Visual Studioで呼び出されるコンストラクターは、2つのイテレーターを使用するコンストラクターです。コンストラクター自体は次のように定義されます。
テンプレート関数には2つのバージョンがあります_Construct
。どちらも同じシグニチャを持っていますが、一方は範囲からベクトルを初期化し、もう一方は2番目のパラメータから構築された値型copyのN個のコピーでベクトルを初期化します。この場合、テンプレートパラメータはの2番目のバージョンでのみ有効です_Construct
。
結果はv
、値10からコピー構築されたベクトルの10個のコピーで満たされます。libstdc++を使用して同じ効果を得るには、次のように構築することで同じコードパスが使用されます。
ここで正しい実装はどれですか?これはlibstdc++のバグですか、それともVisualStudioのC++ライブラリの拡張ですか?
編集:明確にするために、範囲コンストラクターを呼び出す必要があるかどうかは尋ねていません。私は、それを達成するためにどのパスをとるかに関係なく、どのC++実装が正しい動作をするかを尋ねています。
c++ - C ++標準ライブラリには、挿入順に並べられたセットがありますか?
C ++標準ライブラリには「順序集合」データ構造がありますか?順序集合とは、通常とまったく同じstd::set
ですが、アイテムを追加した順序を覚えているものを意味します。
そうでない場合、1つをシミュレートするための最良の方法は何ですか?追加された数と実際の値を各ペアに格納するペアのセットを作成するようなことができることは知っていますが、もっと簡単な解決策がある場合は、フープを飛び越えたくありません。