問題タブ [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.

0 投票する
1 に答える
1235 参照

c++ - XCode 4、Armadillo、および XCode 標準ライブラリ

XCode 4 で armadillo を使用する (非常に基本的な) プログラムをコンパイルしようとしていますが、armadillo のコンパイルに問題があります。

単純な makefile と clang++ だけを実行すると、問題なくコンパイルされますが、XCode を使用すると、深刻な問題が発生しているようで、あらゆる種類のエラーと警告が表示されます (XCode なしでビルドすると、-Werrors を使用しても、何も得られず、クリーンにビルドされます)。

エラーの一部を次に示します。

など。それらのほとんどは、標準ライブラリにない関数に関連していると思います...XCodeは、別のまたは不完全な標準ライブラリを使用していますか? そして、どうすればそれを変更できますか。

私は本当に XCode デバッガーを使いたいだけです。コードが実行されていないときに作業が簡単になります。また、グラフィカルなプロファイラーもあると便利です。

0 投票する
1 に答える
25930 参照

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 を使用できるようにするために行う手順は何ですか?

0 投票する
2 に答える
430 参照

c++ - コンパイラ固有のプロキシに依存する C++11 ライブラリ機能

ある種のコンパイラ マジック (TM) に依存する特定の C++11 機能があることに、試行錯誤の結果、私の注意が向けられました。私は独自の標準準拠 stdlib の実装をいじっています。stdlib の実装がすぐに利用できることは知っていますが、これは小さなアプリケーション用の私自身のバージョンです。

昨夜std::initializer_list、私は仕様に従って実装しましたが、うまく機能させることができませんでした。高低の答えを探しましたが、それは不可能であり、コンパイラ自体に変更が必要であるという声明が残っていました. さて、私はそれの現在の実装を見てみることにしましたlibstdc++、そして確かに私の実装はデザインがまったく同じで、端がわずかに異なっているだけでした.のものと同じデザインlibstdc++です。名前空間 std にある必要があることに気付くまでに 6 時間かかりました。実装は、可能にするコンパイラへのプロキシであることが判明し、コンパイラ自体がクラスをinitializer_list検索しますinitializer_listnamespace std.

私の質問は、ある種の特別なコンパイラ マジックが機能すること、隠されたプロキシ接続を必要とすること、または新しい C++11 ライブラリ機能のいずれかのコンパイラ イントリスティックを秘密にすることを認識する必要がある他のライブラリ機能がもうないことです。これらを事前に知りたいので、コンパイラの魔法に依存する他の機能を実装するときに備えて、試行錯誤でそれを理解するために丸一日を無駄にするのではなく; これは退屈でかなり面倒になる可能性があります。

ありがとう。

0 投票する
2 に答える
433 参照

exception - 例外を有効にする必要がある C++11 標準ライブラリ インターフェイスのリストはありますか?

c++11 ドラフトのリビジョン N3242 を読むと、標準ライブラリのインターフェイスの一部のコンポーネント (特にスレッド化とロック) が例外処理に依存しているようです。

私は例外を無効にして多くの作業を行っているため、例外処理を有効にしないと (実際的または論理的に) 使用できないライブラリ コンポーネント/機能はどれでしょうか?

0 投票する
1 に答える
596 参照

c++ - 「STL」と「C++ 標準ライブラリ」の間に明確な分離定義はありますか?

重複の可能性:
この STL と「C++ 標準ライブラリ」の戦いとは何ですか?

私はSTL (「標準テンプレート ライブラリ」)という用語に非常に慣れており、実際にC++ 標準ライブラリを意味するときによく使用していることに気づきました。したがって、C++(-11) 標準ライブラリのほとんどすべてが最近のテンプレートであるため、C++Standard-Lib に STL とそうでないものの定義はあるのでしょうか? コンテナ、ストリーム、アルゴリズムなどでしょうか?

それとも、「STL」という用語の使用をやめるべきですか? SGI (正しい?) が何年も前に lib に使用した歴史的なものだからですか? 難しいでしょう...

0 投票する
3 に答える
17651 参照

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 間の切り替えでした。このようなもの:

そのようなスイッチを実装するためのシンプルで適度に移植可能な方法はありますか?

0 投票する
3 に答える
510 参照

c++ - c++: コンストラクターで std::pair のメンバーを初期化する方法

私は次のクラスを持っています:

コンストラクターでペアのソケットを初期化するにはどうすればよいですか? 以下はコンパイルされません。

編集:ここにコンパイラエラーがあります。楽しみ:

0 投票する
2 に答える
1344 参照

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++実装が正しい動作をするかを尋ねています。

0 投票する
6 に答える
10582 参照

c++ - C ++標準ライブラリには、挿入順に並べられたセットがありますか?

C ++標準ライブラリには「順序集合」データ構造がありますか?順序集合とは、通常とまったく同じstd::setですが、アイテムを追加した順序を覚えているものを意味します。

そうでない場合、1つをシミュレートするための最良の方法は何ですか?追加された数と実際の値を各ペアに格納するペアのセットを作成するようなことができることは知っていますが、もっと簡単な解決策がある場合は、フープを飛び越えたくありません。