タグ付けされた質問 「stl」

標準テンプレートライブラリ(STL)は、汎用コンテナ、イテレータ、アルゴリズム、および関数オブジェクトのC ++ライブラリです。C ++が標準化されたとき、STLの大部分が標準ライブラリに採用されました。標準ライブラリのこれらの部分は、誤ってまとめて「STL」と呼ばれることもあります。

7
std :: vector <AbstractClass>を宣言できないのはなぜですか?
C#での開発にかなりの時間を費やした後、インターフェイスとして使用する目的で抽象クラスを宣言すると、この抽象クラスのベクトルをインスタンス化して子クラスのインスタンスを格納できないことに気付きました。 #pragma once #include &lt;iostream&gt; #include &lt;vector&gt; using namespace std; class IFunnyInterface { public: virtual void IamFunny() = 0; }; class FunnyImpl: IFunnyInterface { public: virtual void IamFunny() { cout &lt;&lt; "&lt;INSERT JOKE HERE&gt;"; } }; class FunnyContainer { private: std::vector &lt;IFunnyInterface&gt; funnyItems; }; 抽象クラスのベクトルを宣言する行により、MSVS2005で次のエラーが発生します。 error C2259: 'IFunnyInterface' : cannot …

3
クラスにスワップ関数を提供する方法は?
swapSTLアルゴリズムで自分を有効にする適切な方法は何ですか? 1)メンバーswap。std::swapSFINAEトリックを使用してメンバーを使用しますかswap。 2)swap同じ名前空間に自立している。 3)の部分的な特殊化std::swap。 4)上記のすべて。 ありがとうございました。 編集:私は私の質問を明確に表現しなかったようです。基本的に、私はテンプレートクラスを持っており、そのクラス用に作成した(効率的な)スワップメソッドを使用するにはSTLアルゴリズムが必要です。
87 c++  algorithm  stl  swap 


12
マップ値をSTLのベクトルにコピーします
現在、EffectiveSTLを使用しています。項目5は、通常、対応する単一要素よりも範囲メンバー関数を使用する方が望ましいことを示しています。私は現在、マップ内のすべての値をベクトルにコピーしたいと思っています(つまり、キーは必要ありません)。 これを行う最もクリーンな方法は何ですか?
85 c++  stl  containers 

6
std :: get_temporary_bufferが必要なのはなぜですか?
どのような目的で使用する必要がありますstd::get_temporary_bufferか?標準は次のように言っています: 最大n個の隣接するTオブジェクトを格納するのに十分なストレージへのポインタを取得します。 バッファはスタックに割り当てられると思いましたが、そうではありません。C ++標準によると、このバッファは実際には一時的なものではありません。この関数には::operator new、オブジェクトも作成しないグローバル関数に比べてどのような利点がありますか。次のステートメントが同等であるというのは正しいですか? int* x; x = std::get_temporary_buffer&lt;int&gt;( 10 ).first; x = static_cast&lt;int*&gt;( ::operator new( 10*sizeof(int) ) ); この関数はシンタックスシュガーに対してのみ存在しますか?なぜtemporaryその名前にあるのですか? 1996年7月1日のDr.Dobb's Journalで、アルゴリズムを実装するための1つのユースケースが提案されました。 バッファを割り当てることができない場合、またはバッファが要求よりも小さい場合でも、アルゴリズムは正しく機能します。単に速度が低下するだけです。

8
AndroidNDKにベクターのようなC ++ヘッダーを含めることはできません
ベクターのようなC ++クラスをAndroidNDKプロジェクトに(最新のNDK r5bを使用して)含めようとすると、次のようなエラーが発生します... Compile++ thumb : test-libstl &lt;= test-libstl.cpp /Users/nitrex88/Desktop/Programming/EclipseProjects/STLTest/jni/test-libstl.cpp:3:18: error: vector: No such file or directory この問題をオンラインで報告した他の人々は、追加することによって成功を主張しています APP_STL := stlport_static Application.mkファイルに。私はこれを実行し、APP_STLの他のすべての可能な値を試しました。プロジェクトをクリーンアップし、ndk-build cleanを実行し、objフォルダーとlibsフォルダーを削除しましたが、コンパイルしてもベクタークラスが見つかりません。私はこれに数週間取り組んできました(NDK r5がリリースされてから)。誰かアドバイスがあれば本当にありがたいです。ありがとう!

7
std :: multisetには、要素が見つかった場合に1つのサンプル(一意または複製)のみを消去する関数またはアルゴリズムがあります
おそらくこれは重複していますが、検索するものは何も見つかりませんでした。見つかった値を持つすべての要素でerase(value)が呼び出されるstd::multisetと、削除されます。私が考えることができる唯一の解決策は次のとおりです。 std::multiset&lt;int&gt;::iterator hit(mySet.find(5)); if (hit!= mySet.end()) mySet.erase(hit); これは大丈夫ですが、もっと良いかもしれないと思いました。何か案は ?
83 c++  stl  multiset 

1
STLキャラクター特性のポイントは何ですか?
SGI STLリファレンスのコピーに、キャラクター特性に関するページがありますが、これらがどのように使用されているかわかりません。それらはstring.h関数を置き換えますか?それらはによって使用されていないようですstd::string。たとえば、length()onのメソッドstd::stringはCharacterTraitslength()メソッドを使用していません。キャラクター特性が存在するのはなぜですか?実際に使用されたことはありますか?

4
mapとunordered_mapのどちらを選択するのですか?
文字列をキーとしてデータをマッピングしたいとします。どのコンテナを選択するmap必要がありunordered_mapますか?unordered_mapより多くのメモリを消費するので、メモリは問題ではなく、問題は速度であると仮定しましょう。 unordered_map一般に、O(n)の最悪の場合でO(1)の平均計算量を与えるはずです。どのような場合にO(n)に到達しますか?いつmapよりも時間効率が良くなりunordered_mapますか?nが小さいときに起こりますか? unordered_mapデフォルトのhaserVsでSTLを使用すると仮定します。地図。文字列がキーです。 毎回個々の要素にアクセスするのではなく、要素を反復処理する場合は、どちらを選択する必要がありmapますか?

4
マップ用に独自のコンパレータを作成するにはどうすればよいですか?
typedef map&lt;string, string&gt; myMap; に新しいペアを挿入するmyMapと、キーstringを使用して独自の文字列コンパレータで比較します。そのコンパレータをオーバーライドすることは可能ですか?たとえば、キーstringをアルファベットではなく長さで比較したいと思います。または、マップを並べ替える他の方法はありますか?
83 c++  stl  stdmap 

17
文字列のベクトルを文字列に内破する方法(エレガントな方法)
文字列のベクトルを文字列に内破する最もエレガントな方法を探しています。以下は、私が現在使用しているソリューションです。 static std::string&amp; implode(const std::vector&lt;std::string&gt;&amp; elems, char delim, std::string&amp; s) { for (std::vector&lt;std::string&gt;::const_iterator ii = elems.begin(); ii != elems.end(); ++ii) { s += (*ii); if ( ii + 1 != elems.end() ) { s += delim; } } return s; } static std::string implode(const std::vector&lt;std::string&gt;&amp; elems, char delim) { std::string …
83 c++  string  stl  stdstring  implode 

15
std :: fillを使用して、ベクトルに増加する数値を入力します
vector&lt;int&gt;usingを入力したいのですstd::fillが、1つの値の代わりに、ベクトルには後に昇順で数値を含める必要があります。 関数の3番目のパラメーターを1つ繰り返すことでこれを達成しようとしましたが、これでは1または2で満たされたベクトルしか得られません(++演算子の位置によって異なります)。 例: vector&lt;int&gt; ivec; int i = 0; std::fill(ivec.begin(), ivec.end(), i++); // elements are set to 1 std::fill(ivec.begin(), ivec.end(), ++i); // elements are set to 2
82 c++  stl 


12
C ++のchar * vs std :: string [クローズ]
現在のところ、この質問は私たちのQ&A形式には適していません。回答は事実、参考資料、または専門知識によって裏付けられることを期待していますが、この質問は、討論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターにアクセスしてガイダンスを入手してください。 7年前に閉鎖されました。 C ++でsの配列を管理するためstd::stringに、いつ使用する必要があり、いつ使用する必要がありますか?char*char char*パフォーマンス(速度)が重要であり、メモリ管理のためにリスクの高いビジネスの一部を受け入れても構わないと思っている場合は、使用する必要があるようです。 考慮すべき他のシナリオはありますか?
81 c++  stl  stdstring  arrays 

6
std :: vector :: reset()とstd :: vector :: reserved()
この投稿のコメントセクションには、std::vector::reserve() vs std::vector::resize()。の使用に関するスレッドがあります。 元のコードは次のとおりです。 void MyClass::my_method() { my_member.reserve(n_dim); for(int k = 0 ; k &lt; n_dim ; k++ ) my_member[k] = k ; } に要素を書き込むにはvector、正しいことはstd::vector::resize()、ではなく、を呼び出すことだと思いstd::vector::reserve()ます。 実際、VS2010 SP1のデバッグビルドでは、次のテストコードが「クラッシュ」します。 #include &lt;vector&gt; using namespace std; int main() { vector&lt;int&gt; v; v.reserve(10); v[5] = 2; return 0; } 私は正しいですか、それとも間違っていますか?そして、VS2010 SP1は正しいですか、それとも間違っていますか?
80 c++  stl  vector 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.