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

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


6
オーバーロードされた関数へのポインターを指定するにはどうすればよいですか?
オーバーロードされた関数をstd::for_each()アルゴリズムに渡したいのですが。例えば、 class A { void f(char c); void f(int i); void scan(const std::string& s) { std::for_each(s.begin(), s.end(), f); } }; コンパイラーf()はイテレーター・タイプで解決することを期待します。どうやら、それ(GCC 4.1.2)はそれをしません。それで、どのようにしてf()私が欲しいものを指定できますか?
137 c++  stl 

5
C ++二重アドレス演算子?(&&)
私はSTLソースコードを読んでいて、&&アドレス演算子が何をすることになっているのか分かりません。これはからのコード例ですstl_vector.h: vector& operator=(vector&& __x) // <-- Note double ampersands here { // NB: DR 675. this->clear(); this->swap(__x); return *this; } 「Address of Address」は意味がありますか?なぜ1つではなく2つのアドレス演算子があるのですか?

3
最初から最後まで繰り返しながらマップ要素でerase()を呼び出すとどうなりますか?
次のコードでは、マップをループして、要素を消去する必要があるかどうかをテストしています。要素を消去して繰り返し続けても安全ですか、または別のコンテナにキーを収集して、erase()を呼び出すために2番目のループを実行する必要がありますか? map<string, SerialdMsg::SerialFunction_t>::iterator pm_it; for (pm_it = port_map.begin(); pm_it != port_map.end(); pm_it++) { if (pm_it->second == delete_this_id) { port_map.erase(pm_it->first); } } 更新:もちろん、私はこの質問を読んだのですが、関係があるとは思われませんでしたが、私の質問に答えます。
133 c++  stl  iterator 

7
ペアの2番目の要素に基づいてペアのベクトルをソートするにはどうすればよいですか?
ペアのベクトルがある場合: std::vector<std::pair<int, int> > vec; ペアの2番目の要素に基づいてリストを昇順でソートする簡単な方法はありますか? 私は仕事を行います小さな関数オブジェクトを書くことができます知っているが、既存の部品を使用する方法があるSTLをし、std::less直接作業を行うには? 編集:私は、ソートするために3番目の引数に渡す別の関数またはクラスを作成できることを理解しています。問題は、標準的なものから構築できるかどうかです。私は本当に次のようになります: std::sort(vec.begin(), vec.end(), std::something_magic<int, int, std::less>());
133 c++  stl  stdvector 

2
std :: vectorの初期サイズを設定するには?
私は持っていてvector<CustomClass*>、ベクターに多くのアイテムを入れており、高速アクセスが必要なので、リストを使用しません。ベクトルの初期サイズを設定する方法(たとえば、20 000桁にして、新しく挿入するときにコピーされないようにする)
130 c++  stl 

7
std :: queue :: popの戻り値が返されないのはなぜですか?
私はこのページを通過しましたが、同じ理由を得ることができません。そこで言及されている 「値をまったく返さず、クライアントがfront()を使用してキューの先頭にある値を検査することを要求する方が賢明です」 しかし、front()から要素を検査するには、その要素を左辺値にコピーする必要もありました。たとえば、このコードセグメントでは std::queue<int> myqueue; int myint; int result; std::cin >> myint; myqueue.push (myint); / *ここで、結果に割り当てられるRHSに一時が作成されます。参照によって返される場合、ポップ操作後に結果が無効になります* / result = myqueue.front(); //result. std::cout << ' ' << result; myqueue.pop(); 5行目で、coutオブジェクトは最初にmyqueue.front()のコピーを作成し、それを結果に割り当てます。だから、違いは何ですか、ポップ機能は同じことをしたかもしれません。
123 c++  stl 

10
ループのないC ++で配列の内容をstd :: vectorにコピーするにはどうすればよいですか?
後で処理するために保存する必要があるプログラムの別の部分から関数に渡される値の配列があります。データを処理する前に関数が呼び出される回数がわからないため、動的ストレージ構造が必要なので、を選択しましたstd::vector。push_backすべての値に対して個別に標準ループを実行する必要はありませんmemcpy。に似たものを使用してすべてをコピーできると便利です。
122 c++  stl  vector  copy 



13
std :: mapと同等のremove_if
特定の条件に基づいて、マップからさまざまな要素を削除しようとしました。STLアルゴリズムを使用してどうすればよいですか? 最初は使用を考えましたがremove_if、連想コンテナに対してremove_ifが機能しないため、それは不可能です。 マップで機能する「remove_if」と同等のアルゴリズムはありますか? 簡単なオプションとして、マップをループして消去することを考えました。しかし、マップをループして安全なオプションを消去していますか?(イテレータは消去後に無効になるため) 私は次の例を使用しました: bool predicate(const std::pair<int,std::string>& x) { return x.first > 2; } int main(void) { std::map<int, std::string> aMap; aMap[2] = "two"; aMap[3] = "three"; aMap[4] = "four"; aMap[5] = "five"; aMap[6] = "six"; // does not work, an error // std::remove_if(aMap.begin(), aMap.end(), predicate); std::map<int, std::string>::iterator iter = …
118 c++  stl  map 

4
ostringstreamを再利用する方法?
アプリが多くの割り当てを行う必要がないように、ostringstream(および基になるバッファー)をクリアして再利用したいと思います。オブジェクトを初期状態にリセットするにはどうすればよいですか?
117 c++  stl  reset  ostringstream 

4
std :: swap()をオーバーロードする方法
std::swap()並べ替えや割り当ての際に、多くのstdコンテナ(std::listおよびなどstd::vector)で使用されます。 ただし、のstd実装swap()は非常に一般化されており、カスタムタイプに対しては非効率的です。 したがってstd::swap()、カスタムタイプ固有の実装でオーバーロードすることで効率を上げることができます。しかし、どのように実装すれば、標準コンテナで使用できますか?

5
C ++マップアクセス破棄修飾子(const)
次のコードはconst、operator[]メソッドとしてマップを渡すと修飾子が破棄されることを示しています。 #include <iostream> #include <map> #include <string> using namespace std; class MapWrapper { public: const int &get_value(const int &key) const { return _map[key]; } private: map<int, int> _map; }; int main() { MapWrapper mw; cout << mw.get_value(42) << endl; return 0; } これは、マップアクセスで発生する可能性がある割り当てのためですか?マップアクセスを持つ関数をconstとして宣言することはできませんか? MapWrapper.cpp:10: error: passing ‘const std::map<int, int, std::less<int>, …
113 c++  stl  const  maps 

9
マップに挿入する推奨/慣用の方法は何ですか?
に要素を挿入する4つの異なる方法を特定しましたstd::map。 std::map<int, int> function; function[0] = 42; function.insert(std::map<int, int>::value_type(0, 42)); function.insert(std::pair<int, int>(0, 42)); function.insert(std::make_pair(0, 42)); それらのうちどれが好ましい/慣用的な方法ですか?(そして私が考えていない別の方法がありますか?)
111 c++  stl  insert  stdmap  std-pair 

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