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

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

7
push_backとemplace_back
私は少しの違いについて混乱しているpush_backとemplace_back。 void emplace_back(Type&& _Val); void push_back(const Type& _Val); void push_back(Type&& _Val); push_back右辺値参照を取得するオーバーロードがあるので、目的emplace_backがどうなるかよくわかりませんか?


29
ハードコードされた要素でstd :: vectorを初期化する最も簡単な方法は何ですか?
配列を作成して、次のように初期化できます。 int a[] = {10, 20, 30}; std::vector同様にエレガントなを作成して初期化するにはどうすればよいですか? 私が知る最良の方法は: std::vector<int> ints; ints.push_back(10); ints.push_back(20); ints.push_back(30); もっと良い方法はありますか?


17
std :: vectorの反復:符号なしvs符号付きインデックス変数
C ++でベクトルを反復処理する正しい方法は何ですか? 次の2つのコードフラグメントを検討してください。これは正常に機能します。 for (unsigned i=0; i < polygon.size(); i++) { sum += polygon[i]; } そしてこれ: for (int i=0; i < polygon.size(); i++) { sum += polygon[i]; } を生成しwarning: comparison between signed and unsigned integer expressionsます。 私はC ++の世界で新しいので、unsigned変数は少し恐ろしいように見え、unsigned正しく使用しないと変数が危険である可能性があることを知っています。これは正しいですか?
470 c++  stl  unsigned  signed 

14
特定のキーがC ++ std :: mapに存在するかどうかを確認する方法
指定されたキーがマップ内にあるかどうかを確認しようとしていますが、それができません。 typedef map<string,string>::iterator mi; map<string, string> m; m.insert(make_pair("f","++--")); pair<mi,mi> p = m.equal_range("f");//I'm not sure if equal_range does what I want cout << p.first;//I'm getting error here では、pの内容をどのように印刷できますか?
450 c++  dictionary  stl 


5
「STL」と「C ++標準ライブラリ」の違いは何ですか?
誰かがもたらしたこの記事をクレームはというのが私の注意に(私は言い換えだ) STL項は全体のC ++標準ライブラリの代わりに、SGIのSTLから採取された部分を参照するために悪用されています。 (...)STL(SGIで設計された)をまだほとんど使用していないという事実にもかかわらず、「STL」を指します。 C ++標準ライブラリの一部はSTLの一部に基づいており、多くの人々(複数の作者や悪名高いエラーに悩まされているcplusplus.comを含む)が「STL」と呼んでいるのはこれらの部分です。ただし、これは不正確です。実際、C ++標準では「STL」については言及されておらず、2つのコンテンツには違いがあります。 (...)「STL」は、SGI STLに基づくstdlibのビットを参照するために使用されることはほとんどありません。人々はそれが全体の標準ライブラリだと思っています。CVに配置されます。そしてそれは誤解を招くものです。 私はC ++の歴史についてほとんど何も知らないので、記事の正確さを判断できません。STLという用語は使用しないでください。それともこれは孤立した意見ですか?


9
なぜ参照のベクトルを作成できないのですか?
私がこれをするとき: std::vector<int> hello; すべてがうまくいきます。ただし、代わりに参照のベクトルにすると、次のようになります。 std::vector<int &> hello; 次のような恐ろしいエラーが発生します エラーC2528: 'ポインター':参照へのポインターが不正です 構造体への一連の参照をベクトルに入れたいので、ポインターをいじる必要はありません。なぜベクトルはこれについてかんしゃくを投げているのですか?代わりにポインタのベクトルを使用する唯一のオプションはありますか?


11
ベクトルを降順に並べ替える
使うべきか std::sort(numbers.begin(), numbers.end(), std::greater<int>()); または std::sort(numbers.rbegin(), numbers.rend()); // note: reverse iterators ベクトルを降順に並べ替えるには?どちらのアプローチにもメリットやデメリットはありますか?
310 c++  sorting  stl  vector  iterator 

14
ベクトルからサブベクトルを抽出する最良の方法?
私が持っていると仮定しstd::vector(せのはそれを呼び出すmyVecサイズの)N。要素XからYまでのコピーで構成される新しいベクトルを作成する最も簡単な方法は何ですか(0 <= X <= Y <= N-1)。たとえば、sizeのベクトルをmyVec [100000]通過myVec [100999]します150000。 これをベクトルで効率的に実行できない場合、代わりに使用する必要がある別のSTLデータ型はありますか?
295 c++  stl  vector  range 

23
重複を消去してベクターをソートする最も効率的な方法は何ですか?
潜在的に多くの要素を持つC ++ベクトルを取得し、重複を消去して、並べ替える必要があります。 現在、以下のコードがありますが、機能しません。 vec.erase( std::unique(vec.begin(), vec.end()), vec.end()); std::sort(vec.begin(), vec.end()); これを正しく行うにはどうすればよいですか? さらに、最初に重複を消去する(上記のコードと同様)か、ソートを最初に実行する方が高速ですか?最初にソートを実行した場合、std::unique実行後もソートされたままになることが保証されますか? または、これをすべて行う別の(おそらくより効率的な)方法はありますか?
274 c++  sorting  vector  stl  duplicates 

4
std :: string length()およびsize()メンバー関数
私はこの質問の回答を読んでいて、実際に呼び出されるメソッドがあることを発見しlength()ましたstd::string(私は常にを使用していましたsize())。このメソッドをstd::stringクラスに含める理由はありますか?私は、MSDNとCppRefernceの両方を読んで、そして、彼らは差がないことを示しているように見えるsize()とlength()。もしそうなら、それはクラスのユーザーをより混乱させませんか?
265 c++  string  stl  size 

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