問題タブ [stl]

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 投票する
12 に答える
21614 参照

c++ - 動的にソートされた STL コンテナ

私はSTLにかなり慣れていないので、動的にソート可能なコンテナがあるかどうか疑問に思っていましたか? 現時点では、さまざまな並べ替えアルゴリズムと組み合わせてベクターを使用することを考えていますが、並べ替えられたベクターにエントリを挿入するという (おそらく) 線形の複雑さを考えると、より適切な選択があるかどうかはわかりません。

「動的に」明確にするために、実行時に並べ替え順序を変更できるコンテナーを探しています。たとえば、昇順で並べ替えてから、後で降順で並べ替えます。

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

visual-studio - stringstream マニピュレータ & vstudio 2003

VC++ (VStudio 2003) で stringstream オブジェクトを使用しようとしていますが、オーバーロードされた << 演算子を使用していくつかのマニピュレータを設定しようとするとエラーが発生します。

私は次のことを試みています:

これはコンパイルされません (エラー C2593: 'operator <<' があいまいです)。
VStudio 2003 は、このようなマニピュレータの使用をサポートしていますか?
StrStream.width(2); のように、stringstream オブジェクトに幅を直接設定できることはわかっています。
より一般的な方法が機能しないのはなぜだろうと思っていました。

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

c++ - C++-STL/Boost デバッグ シンボルを削除する (... または作成しない)

Linux/Gcc/LD - ツールチェーン。

次の 2 つの理由から、STL/Boost デバッグ シンボルをライブラリと実行可能ファイルから削除したいと考えています。

  1. 大きなプログラムではリンクが非常に遅くなります
  2. デバッグが stl/boost コードに飛び込み、煩わしい

1.インクリメンタルリンクは大きな改善になりますが、AFAIK ldはインクリメンタルリンクをサポートしていません。1999 年の dr.dobb のジャーナル (もう Web ではなく、archive.orgにあります) に「疑似インクリメンタル リンク」という回避策があります(アイデアは、すべてを動的ライブラリに入れ、すべての更新されたオブジェクト ファイルを 2 つ目のライブラリに入れることです)。が最初に読み込まれます) が、これは実際には一般的な解決策ではありません。

2.ここにスクリプトがありますが、a)私には機能しませんでした(シンボルを削除しませんでした)、b)パイプの最後で機能するため非常に遅くなりますが、削除する方が効率的です以前のシンボル。

もちろん、他のデバッグ シンボルはそのままにしておく必要があります。

0 投票する
19 に答える
434472 参照

c++ - C++ で std::string からスペースを削除する

C++ で文字列からスペースを削除するための推奨される方法は何ですか? すべての文字をループして新しい文字列を作成することもできますが、もっと良い方法はありますか?

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

c++ - C++は、std::set、std::mapなどの一定時間でbegin/end/rbegin/rendを実行しますか?

ルックアップが対数時間で行われる std::set や std::map などのデータ型の場合、開始イテレータと終了イテレータを維持するために実装が必要ですか? begin と end へのアクセスは、対数時間で発生するルックアップを意味しますか?

開始と終了は常に一定の時間内に発生すると常に想定してきましたが、Josuttis でこれを確認することはできません。今は、パフォーマンスについて分析する必要があるものに取り組んでいるので、自分のベースを確実にカバーしたいと考えています。

ありがとう

0 投票する
15 に答える
14432 参照

c++ - STL 代替

STL コンテナーを使用すると、コードのデバッグ バージョンの実行が非常に遅くなるため、STL コンテナーを使用するのは本当に嫌いです。デバッグ ビルドで妥当なパフォーマンスを発揮する STL の代わりに、他の人は何を使用していますか?

私はゲーム プログラマーですが、これは私が取り組んできた多くのプロジェクトで問題になっています。すべてに STL コンテナーを使用すると、60 fps を取得するのはかなり困難です。

私はほとんどの作業で MSVC を使用しています。

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

c++ - 二重インデックス作成に最適なコンテナー

二重索引付けを可能にするコンテナーをセットアップするための (C++ での) 最良の方法は何ですか? 具体的には、オブジェクトのリストがあり、それぞれがキーでインデックス付けされています (キーごとに複数の可能性があります)。これはマルチマップを意味します。ただし、これに伴う問題は、オブジェクトの位置を見つけるためのルックアップが線形よりも悪い可能性があることです。データの重複は避けたいので、各オブジェクトが独自の座標を維持し、マップ内で自分自身を移動する必要があるのは悪いことです (自分のオブジェクトを移動すると、メンバー関数内でデストラクタが間接的に呼び出される可能性があることは言うまでもありません!)。オブジェクトポインターと座標の両方でインデックスを維持し、オブジェクト自体が安定した参照/ポインターを保証するコンテナーが望ましいです。次に、各オブジェクトはイテレータをインデックス (座標を含む) に格納し、十分に抽象化して、そしてそれがどこにあるかを知ってください。Boost.MultiIndex は最良のアイデアのように思えますが、非常に恐ろしく、実際のオブジェクトを const にする必要はありません。

あなたは何をお勧めします?

編集: Boost Bimap は良さそうですが、安定したインデックス作成を提供しますか? つまり、座標を変更しても、他の要素への参照は有効なままでなければなりません。インデックス作成にポインターを使用する理由は、オブジェクトには固有の順序付けがなく、オブジェクトが変更されてもポインターが一定のままである可​​能性があるためです (IIRC が安定したインデックス作成を提供する Boost MultiIndex での使用を許可します)。

0 投票する
16 に答える
29981 参照

c++ - 初期化されていないストレージを含む STL ベクトル?

struct連続したストレージに sを配置する必要がある内部ループを作成しています。structこれらの s がいくつになるかは、事前にわかりません。私の問題は、STL がvectorその値を 0 に初期化することです。そのため、何をしても、初期化のコストと、structのメンバーを値に設定するコストが発生します。

初期化を防ぐ方法はありますか、またはサイズ変更可能な連続したストレージと初期化されていない要素を備えた STL のようなコンテナーがありますか?

(コードのこの部分は最適化する必要があると確信しており、初期化にはかなりのコストがかかると確信しています。)

また、初期化がいつ行われるかについての説明については、以下の私のコメントを参照してください。

いくつかのコード:

0 投票する
8 に答える
74638 参照

c++ - std::map挿入またはstd::map検索?

既存のエントリを保持したいマップを想定しています。20% の確率で、挿入するエントリは新しいデータです。返されたイテレータを使用して std::map::find を実行してから std::map::insert を実行する利点はありますか? それとも、挿入を試みてから、反復子がレコードが挿入されたかどうかを示しているかどうかに基づいて処理するほうが速いですか?

0 投票する
10 に答える
41889 参照

c++ - std::ペアとは何ですか?

std::pairのために、なぜ私はそれを使用するのですか、そしてどのような利点boost::compressed_pairをもたらしますか?