問題タブ [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 投票する
15 に答える
238770 参照

c++ - C++ STL が「ツリー」コンテナを提供しないのはなぜですか?

C++ STL が「ツリー」コンテナを提供しないのはなぜですか? 代わりに使用するのに最適なものは何ですか?

パフォーマンス向上のためにツリーを使用するのではなく、オブジェクトの階層をツリーとして保存したい...

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

c++ - ベクトルを重要な初期値で埋める方法は?

std::vector に重要な初期値 (シーケンス番号など) を入力する方法を知っています。

しかし、これは for ループです。stl 機能を使用して (Boost を使用せずに)より少ないコード行でこれを行うエレガントな方法はありますか?

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

c++ - std::list の部分ソート

一部を並べ替えたいリンクリストがあります。たとえば、次のようになります。

std::sort はランダム アクセス イテレータを必要とするため、このアプローチは機能しません。特殊化 std::list::sort がありますが、それはリスト全体をソートすることしかできません。リストメンバーに自分で何かを書くのに十分なアクセス権があるとは思いません。

たとえば、ベクトルに変更せずにこれを行う方法はありますか?

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

c++ - C++ STL: Container Recreation or Reuse after clearing?

In programming we face various situations where we are required to make use of intermediate STL containers as the following example depicts:

Or

Which approach is better in terms of time and space complexity considering the present state of C++ compliers?

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

c++ - 非 void STL 消去の安全な等価物は何ですか?

hash_map と次のようなコードがあるとします。

しかし、GCC の STL は消去時にイテレータを返さず、void を返します。今のようなコードです

安全 (つまり、イテレータを無効にしない、またはその他の予期しないまたは不快なことをしない)? これは hash_map であることに注意してください。

0 投票する
4 に答える
4448 参照

c++ - ソートされたSTLコンテナー内の特定のキーに「最も一致するキー」を見つける

問題

入力タイムスタンプに最も近い既存のタイムスタンプを取得するために、タイムスタンプに基づいて検索する必要があるタイムスタンプ付きデータがあります。
できれば、これは STL で解決する必要があります。boost::* または stl::tr1::* (Featurepack を使用した VS9 から) も可能です。
タイムスタンプ付きデータの例:

stl::vector、 、sort()でアプローチequal_range()

maporsetは正確な一致を見つけることしかできないため、これらのいずれかを使用してそれ以上取得することはできません。これで、入ってくるデータを追加するがvectorできました。検索する前に を使用し、カスタム比較関数を指定します。 その後、's'を使用して、指定された値の 2 つの隣接値を見つけます。これらの 2 つの値から、どちらが最も近いかを確認し、最適な一致を見つけます。<algorithm>sort()
<algorithm>equal_range()xx


これはそれほど複雑ではありませんが、もっと洗練された解決策があるのではないかと思います。
たぶん、STLにはすでにそれを行うアルゴリズムがあるので、ここで何かを再発明していませんか?

更新: 線形対二分探索

処理するデータが非常に多いため、直線的に検索する必要がないことを忘れていました。
ベクトルを並べ替える理由はsort()map. a を使用すると、2 倍の対数複雑度で検索を実行mapできません。 私は正しいですか?equal_range()

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

c++ - std::for_each の多相ファンクタ

コード全体でテンプレートを増殖させることなく、stl アルゴリズム for_each を使用しようとしています。std::for_each は MyFunctor クラスを値でインスタンス化したいと考えていますが、抽象化されているためできません。ポインターを渡し、必要に応じて参照解除するファンクター アダプター クラスを作成しました。

私の質問:

STL または Boost には既にそのようなアダプター クラスがありますか? 車輪を再発明する必要はありません。

乾杯、

デイブ

0 投票する
7 に答える
8871 参照

c++ - C++ STL のベクトルの size_type の定義はどこで調べることができますか?

size()ベクトルの関数の結果を にキャストしても安全なようunsigned intです。しかし、どうすれば確実に言えますか?私のドキュメントでは、 がどのようsize_typeに定義されているかが明確ではありません。

0 投票する
7 に答える
25303 参照

c++ - list::size() は本当に O(n) ですか?

std::list::size()最近、線形の複雑性があると言及している人がいることに気付きました。一部の情報源
に よると、これは実際には実装に依存しているため、標準では複雑さがどうあるべきかが規定されていません。このブログエントリ のコメントには次のように書かれています。

実際には、使用している STL によって異なります。Microsoft Visual Studio V6 は size() を {return (_Size); として実装します。} 一方、gcc (少なくともバージョン 3.3.2 および 4.1.0 では) は { return std::distance(begin(), end()); のように行います。最初の速度は一定で、2 番目の速度は o(N) です。

  1. したがって、私の推測では、VC++ クラウドsize()は常に複雑であり、Dinkumware はおそらく VC6 以降その事実を変えていないでしょう。私はそこにいますか?
  2. 現在はどのように見えますgccか? それが本当に O(n) である場合、なぜ開発者はそうすることにしたのですか?
0 投票する
2 に答える
569 参照

c++ - std::generate_n()アルゴリズムでカスタムファンクターを使用する正しい方法は?

次のコードは、XPSP3 の VC++ 8 で正しくコンパイルされますが、実行するとランタイム エラーが発生します。

私のヘッダーは次のようになります。

私の実装は次のようになります。

これは正常にコンパイルされ、例外が生成されます (ヘッダーで定義された logic_error 例外ではありません)。

ファンクターの代わりに関数を使用するように実装を変更すると、機能します。

ここでファンクターを使用することの何が問題になっていますか?