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

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

16
wstringを文字列に変換する方法は?
問題は、wstringをstringに変換する方法ですか? 次の例があります: #include <string> #include <iostream> int main() { std::wstring ws = L"Hello"; std::string s( ws.begin(), ws.end() ); //std::cout <<"std::string = "<<s<<std::endl; std::wcout<<"std::wstring = "<<ws<<std::endl; std::cout <<"std::string = "<<s<<std::endl; } コメントアウトされた行の出力は次のとおりです。 std::string = Hello std::wstring = Hello std::string = Hello しかしなしは: std::wstring = Hello 例に何か問題がありますか?上記のように変換できますか? 編集 新しい例(いくつかの回答を考慮に入れる)は #include <string> #include …
204 c++  unicode  stl  wstring 

12
STLマップでは、[]よりもmap :: insertを使用する方が良いですか?
しばらく前に、STL マップに値を挿入する方法について同僚と話し合いました。map[key] = value; 自然な感じで読みやすいので好き だったが、彼は好きだった map.insert(std::make_pair(key, value)) 私は彼に尋ねたところ、どちらも挿入の方が良い理由を思い出せませんが、スタイルの好みだけではなく、効率などの技術的な理由があったのだと思います。SGIのSTLの参照は、単純に言う、「厳密に言えば、このメンバ関数は不要である:それは便宜上存在します。」 誰かがその理由を教えてもらえますか、それともそこにあることを夢見ていますか?
201 c++  stl  map  stdmap 

5
C ++ STLベクトル:インデックスからイテレーターを取得しますか?
そのため、stlベクトルの要素にindex []でアクセスする一連のコードを記述しましたが、今度は、ベクトルのチャンクのみをコピーする必要があります。それはvector.insert(pos, first, last)私が欲しい関数のように見えます... intとして最初と最後しか持っていないことを除いて。これらの値のイテレータを取得できる良い方法はありますか?
200 c++  stl  vector  iterator 

12
過負荷の飛行機から太っている人々を捨てる。
飛行機があり、燃料が少ないとしましょう。飛行機が乗客の体重の3000ポンドを落とさない限り、次の空港に到着することはできません。最大の命を救うために、一番重い人を飛行機から降ろしたいと思います。 そして、そうそう、飛行機には何百万人もの人がいるので、リスト全体をソートする必要はなく、最も重い乗客を見つけるための最適なアルゴリズムが欲しいのです。 これは、C ++でコーディングしようとしているもののプロキシの問題です。乗客のマニフェストで「partial_sort」を重量で実行したいのですが、必要な要素の数がわかりません。独自の "partial_sort"アルゴリズム( "partial_sort_accumulate_until")を実装することもできますが、標準のSTLを使用してこれを行う簡単な方法があるかどうか疑問に思っています。
200 c++  algorithm  sorting  stl 

7
C ++ 11でメンバー以外の開始関数と終了関数を使用する理由
すべての標準コンテナには、そのコンテナのイテレータを返すためのbeginおよびendメソッドがあります。ただし、C ++ 11には、と呼ばれる無料の関数と、およびのメンバー関数を呼び出すことが明らかに導入されstd::beginてstd::endいます。だから、書く代わりにbeginend auto i = v.begin(); auto e = v.end(); あなたは書くでしょう auto i = std::begin(v); auto e = std::end(v); Herb Sutterは、彼の講演「Writing Modern C ++」で、コンテナーの開始イテレーターまたは終了イテレーターが必要な場合は常に無料の関数を使用する必要があると述べています。しかし、なぜあなたがそうしたいのかについて彼は詳細には触れません。コードを見ると、1つの文字をすべて節約できます。したがって、標準のコンテナに関する限り、無料の関数はまったく役に立たないようです。Herb Sutterは、非標準のコンテナにはメリットがあると述べましたが、ここでも詳細には触れませんでした。 では、問題は、の無料の関数バージョンが正確に何でstd::beginありstd::end、対応するメンバー関数のバージョンを呼び出す以外に何をするのか、そしてなぜそれらを使用したいのでしょうか?



7
STLの両端キューとは実際には何ですか?
OverаэтотвопросестьответынаStack Overflowнарусском:Особенностьразмещениеэлементоввstd :: deque 私はSTLコンテナーを見て、それらが実際に何であるか(つまり、使用されるデータ構造)を理解しようとしていましたが、両端キューによって停止しました。一定の時間ですが、演算子[]が一定の時間で行われるという約束に困っています。リンクされたリストでは、任意のアクセスはO(n)であるべきですよね? そして、それが動的配列である場合、どのようにして一定の時間で要素を追加できますか?再割り当てが発生する可能性があり、O(1)はvectorの場合と同様に償却コストであることに注意してください。 したがって、一定の時間で任意のアクセスを可能にし、同時に新しい大きな場所に移動する必要がないこの構造は何なのかと思います。
192 c++  stl  deque 

13
あなたはstd :: vectorから継承しないでください
わかりました、これを告白するのは本当に難しいですが、私は現在、から継承する強い誘惑がありstd::vectorます。 ベクター用に約10のカスタマイズされたアルゴリズムが必要であり、それらを直接ベクターのメンバーにしたい。しかし当然ながら、の残りstd::vectorのインターフェイスも必要です。さて、私の最初のアイデアは、法律を遵守する市民std::vectorとして、MyVectorクラスにメンバーを含めることでした。しかし、私はすべてのstd :: vectorのインターフェースを手動で再提供する必要があります。入力するには多すぎます。次に、私はプライベート継承について考えました。そのため、メソッドを再提供する代わりusing std::vector::memberに、パブリックセクションにをまとめて記述します。これも実際には退屈です。 そして、私は実際に、私は単純にからパブリックに継承できると本当に思っていますがstd::vector、このクラスは多態的に使用されるべきではないという警告をドキュメントに提供しています。ほとんどの開発者は、これを多態的に使用してはならないことを理解するのに十分な能力があると思います。 私の決定は完全に不当なものですか?もしそうなら、なぜですか?追加のメンバーが実際にはメンバーになるが、ベクターのすべてのインターフェースを再入力する必要がない代替案を提供できますか?疑わしいですが、できれば幸せです。 また、一部の馬鹿が次のようなものを書くことができるという事実は別として std::vector<int>* p = new MyVector MyVectorを使用する上で他の現実的な危険はありますか?現実的と言うことで、ベクトルへのポインタを受け取る関数を想像するようなものを破棄します... さて、私は私のケースを述べました。私は罪を犯しました。今私を許すかどうかはあなた次第です:)
189 c++  oop  inheritance  stl  vector 

14
STLまたはQtコンテナー?
Qtコンテナの使用の長所と短所は何ですか(QMap、QVectorそのSTLと同等の上に、など)は? Qtを選ぶ1つの理由がわかります。 QtコンテナーはQtの他の部分に渡すことができます。たとえば、それらはa QVariantと次にa を入力するために使用できますQSettings(ただし、いくつかの制限がありますがQList、QMap/ およびQHashキーが文字列である場合のみ受け入れられます)。 他にありますか? 編集:アプリケーションがすでにQtに依存していると仮定します。
185 c++  qt  stl 

10
特定のSTLコンテナを使用するのはどのシナリオですか?
私はC ++に関する本でSTLコンテナー、特にSTLとそのコンテナーに関するセクションを読んでいます。今、私はそれらのそれぞれに固有の特性があることを理解し、それらのすべてを暗記するところです...しかし、まだ理解していないのは、それぞれがどのシナリオで使用されているかです。 説明は何ですか?サンプルコードをお勧めします。



9
intの最大値
Integer.MaxValueJavaのC / C ++のような関数で(コンパイラに従って)整数の最大値を見つけるコードはありますか?
177 c++  c  stl  limits  numeric-limits 

6
Cスタイルの配列からstd :: vectorを初期化する方法は?
std::vectorCスタイルの配列からを初期化する最も安い方法は何ですか? 例:次のクラスにはがvectorありますが、外部の制限により、データはCスタイルの配列として渡されます。 class Foo { std::vector<double> w_; public: void set_data(double* w, int len){ // how to cheaply initialize the std::vector? } 言うまでもなく、呼び出しw_.resize()て要素をループするか、を呼び出すことができますstd::copy()。より良い方法はありますか?
174 c++  arrays  vector  stl 

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